(EDA、FPGA)Verilog实验报告.doc
文本预览下载声明
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
显示全部