文档详情

(EDA、FPGA)Verilog实验报告.doc

发布:2018-09-11约1.53万字共23页下载文档
文本预览下载声明
FPGA实验报告 学 号: 姓 名: 院 系:微电子技术系 专 业:集成电路设计 指 导 教 师:李 海 2010年 12月 实验一 一位全加器 一、实验目的: 1、通过此实验进一步熟悉和掌握CPLD/FPGA开发软件的使用方法。 2、掌握Verilog HDL语言的书写格式及编程方法。 3、学会对Verilog HDL 代码进行编译,检查,改错。 4、学会编写代码,验证1位全加器。 5、学习简单时序电路的设计和硬件测试。 二、实验内容和原理: (一)实验内容: 本实验的内容是建立一个1位全加器。具体内容包括: (1)使用Quartus = 2 \* ROMAN II建立工程、编写程序; (2)进行波形仿真验证; (3)进行硬件测试 (二)实验原理: 1、一位全加器包括输入端A、B,进位Cin,和输出count,sum,下图是真值表: A B Cin Sum Cout 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 0 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 1 1 1 1 2、全加器的电路原理图: 三、实验步骤: 1、启动Quartus II 软件,新建空白的工程,名为:full_add.qdf。 2、新建Verilog HDL源文件full_add.v如下 full.v: module full_add (a,b,cin,sum,count); input a,b,cin; output sum,count; assign {count,sum}=a+b+cin; endmodule 3、编译完成,找出错误,并改正,直到编译无误为止。 4、新建测试文件如下: module full_add _test; reg a,b,cin; wire count,sum; full_add (a,b,cin,sum,count); initial begin a=0;b=0;cin=0; #1000 a=1; #1000 a=0;b=1; #1000 a=1; #1000 a=0;b=0;cin=1; #1000 a=1; #1000 a=0;b=1; #1000 a=1; #1000 $finish; end endmodule 5、编译测试文件,结合full_add.v,使用MODELSIM进行时序仿真,观察结果。 四、实验数据和结果: 比对该波形图的电平与真值表的大小发现其一一对应。 五:实验总结: 通过本实验,了解了Quartus II的基本使用方法,学会了对Verilog HDL 代码的调试,并能通过编译、波形仿真和验证,最终得到了预想的结果。 实验二 花样流水灯 一、实验目的: 1、通过此实验进一步熟悉和掌握CPLD/FPGA开发软件的使用方法 2、熟悉LED灯的工作原理。 3、掌握控制LED灯的开关。 4、编写代码实现LED灯的花样流水闪烁。 5、学习简单时序电路的设计和硬件测试。 二、实验内容和原理: (一)实验内容: 本实验的内容是建立可用与控制LED流水灯的简单硬件电路,要求在SmartSOPC实验箱上实现LED1~LED8发光二极管流水灯显示。 (二)实验原理: 50MHz 的时钟源,假如我们直接把它输入。LED灯的点亮和熄灭,主要是控制发光二极管的阴极置低电平到发光二极管LED,由于人眼的延迟性,我们将无法看到LED 闪烁,认为它一直亮着。如果我们期望看到闪烁灯,就需要将时钟源的频率降低后再输出。本实验采用计数与判段的方式来实现降低时钟源的频率。计数电路可用计数器实现,每来一个时钟脉冲CLK,计数器就加1,而每当判断出计数器达到某个数值时,把输出状态求反。 三、实验步骤: 1、打开Quartus II 软件建立一个空白工程,然后命名为led_water.qpf. 2、点击File→New...,在该项目下新建Verilog HDL 源程序文件led_water.v,输入试验程序中的源程序代码保存后选择工具栏中启动编译,若在编译中发现错误,则找出并更正错误,直到编译成功为止。 moduleled_water (sys_clk,led); input sys_clk; output [7:0] led; reg [7:0] led; reg [24:0] count; reg [4:0] state; wire clk; always @ (posedge sys_clk) count=count+1b1; assign clk=count[23]; always @ (posedge clk) begin case(state) 5b00000
显示全部
相似文档