FPGA课程设计报告.docx
- 文档编号:29319762
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:28
- 大小:5.43MB
FPGA课程设计报告.docx
《FPGA课程设计报告.docx》由会员分享,可在线阅读,更多相关《FPGA课程设计报告.docx(28页珍藏版)》请在冰豆网上搜索。
FPGA课程设计报告
F
P
G
A
课
程
设
计
报
告
学部:
信息科学与技术学部
专业:
通信工程
班级:
10级1班
学号:
姓名:
万洁
指导老师:
祝宏
合作伙伴:
张紫君一.《任务书》:
实验一100进制的可逆计数器(11——12周)
实验二交通灯控制系统(15周)
实验三多功能数字钟系统(14-15周)
二.实验书写格式:
一:
题目要求
二:
程序代码
三:
操作步骤及运行结果截图
四:
心得体会
三.实验附录:
一:
老师提供的资源
二:
关于实验所用EP4CE115F29板的简介
实验一100进制的可逆计数器
一、设计一个可控的100进制可逆计数器,要求用实验箱下载。
(1)计数器的时钟输入信号周期为200ns。
(2)以十进制形式显示。
(3)有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用下,计数器具有复位、增或减计数、暂停功能。
clr
plus
minus
功能
0
×
×
复位为0
1
1
0
递增计数
1
0
1
递减计数
1
1
1
暂停计数
二、程序如下:
modulekeni100(CLR,CLK,PLUS,MINUS,OUT);
——图
在出现的输入界面内输入程序,点击file→saveas,在出现的对话框中点击Yes,然后在出现的newprojectWizard对话框中点击next,在Family&DeviceSettings对话框中选择如下图所示的选项,在选择第三方软件的对话框中的选项选为none后点击next,在随后出现的对话框中,点击finish。
设置完成。
——图
2、点击project→SetasTop-LevelEntity,指向所输入的文件。
3、点击Processing→Start→StartAnalysis&Synthesis。
——图
4、点击File→New出现上面第一步时出现的对话框,如图,选择VectorWaveformFile。
5、点击View→UtilityWindows→NodeFinder,在出现的对话框中点击List,如下图所示
——图
选择所需要的节点,将其拉到后面的Name栏中,并设置输入数据
6、选择EndTime:
点击Edit→EndTime,设置参数,如下图所示
——图
7、输入参数的数据设置完成后,保存,仿真图形如下图所示:
——图
8.点击Assigment→Settings,在出现的对话框(如图所示)中,选择SimulatorSettings,在Simulationmode中选择Functional,进行功能编译。
——图
8、点击Processing→GenerateFunctionalSimulationNetlist
9、点击Processing→StartSimulation,进行仿真。
四、仿真结果:
——图
如上图所示,当CLR为0时,OUT清零;当CLR为1时,OUT开始输出,当PLUS=1,MINUS=0时,OUT开始递加;
——图
如图所示,当PLUS=1,MINUS=1时,OUT暂停计数;当PLUS=0,MINUS=1时,OUT开始递减。
五、封装
在quartus中点击file→openproject,在弹出的对话框中选择counter100文件,单击右键选择CreatSymbolFileforCurrentFile
——图
上图为counter100的封装图,在quartus中打开此图,双击,将会看到counter100的程序.
六、试验箱下载
将编好的程序应用于硬件上进行验证,所用的电路板子是:
EP4CE115F29C7外观如下图所示:
——图
1.安装硬件
在安装向导中选择如下图所示的安装路径,点击确定。
——图
2、硬件安装完毕后,在中封装图连接,如下图图
——图
封装模块div和decode4_7是辅助模块,div是分频模块,decode4_7是译码部分。
(相关程序在报告后面的附件)
3、图形连接完毕后,单击File→Saveas,确定,修改设置,如下图图所示:
——图
4、单击Processing→StartCompilation,进行编译,没有错误后进行下一步。
编译结果如下图所示。
——图
5、单击Tools→Programmer,在弹出的对话框中,单击Hardware
弹出一个对话框,选择USB-Blaster[USB-0],如下图所示
6、点击Start,开始运行。
——图
七、硬件部分照片截图
——图
如图所示Clk(sw[3])与Clr(sw[0])置为1时,将Plus(sw[1])置为1,Minus(sw[2])置为0,开始从0递增,图为到99时,将Plus与Minus都置为1,暂停计数为99;
——图
如图,所示,下一时刻,数码管显示为0,重新开始递增计数;
——图.
将Plus(sw[1])置为0,Minus(sw[2])置为1,开始从99递减计数。
八.实验总结:
此次实验,花费的时间有些长,主要是因为代码的编写方面以及封装及连接图方面的不太的熟练,在他人的指导及自己的反复操作练习下,终于完整的完成了第一个实验,很开心。
这次实验,我收获的是对FPGA软件的运用和熟练,也收获了代码编写的积累与熟悉,充分感受到了代码与软件运用,与硬件器件所展现的知识与实践的相统一,体味到了实验的趣味性。
实验二交通灯控制系统
一、交通灯控制系统,要求用实验箱下载。
(1)设计一个十字路口交通信号灯的定时控制电路。
要求红、绿灯按一定的规律亮和灭,绿灯亮时,表示该车道允许通行;红灯亮时,该车道禁止通行。
并在亮灯期间进行倒计时,并将运行时间用数码管显示出来。
(2)要求主干道每次通行时间为40秒,支干道每次通行时间为30秒。
每次变换运行车道前绿灯闪烁,持续时间为5秒。
即车道要由主干道转换为支干道时,主干道在通行时间只剩5秒钟时,绿灯闪烁5秒显示,支干道仍为红灯,以便主干道上已过停车线的车继续通行,未过停车线的车停止通行。
同理,当车道由支干道转换为主干道时,支干道绿灯闪烁显示5秒钟,主干道仍为红灯。
(3)定时器要求采用递减计时方式进行计时。
HG、HR分别表示主干道的绿灯和红灯
CG、CR分别表示支干道的绿灯和红灯
两个定时时间:
绿灯闪烁和绿灯停止闪烁
4个状态:
S0:
主干道绿灯亮,支干道红灯亮。
S1:
主干道绿灯闪烁,支干道红灯亮。
S2:
支干道绿灯亮,主干道红灯亮。
S3:
支干道绿灯闪烁,主干道红灯亮。
二.程序如下:
moduletraffic00(clk,en,lampar,fag,lampbr,fbg,numa,numb);
inputclk,en;
output[7:
0]numa,numb;
reg[7:
0]numa,numb;
频程序
2.译码程序
3.管脚分配图
二.关于实验所用EP4CE115F29板的简介
一:
老师提供的资源
1、分频程序
modulediv_zh(f,_500HzOut,_1KHzOut,
ncR,CLOCK_50,s);
inputncR,CLOCK_50,s;
output_500HzOut,_1KHzOut,f;
wire_1HzOut,_5HzOut;
assignf=s_5HzOut:
_1HzOut;
divn#(.WIDTH(26),.N())
u0(.clk(CLOCK_50),
.rst_n(ncR),
.o_clk(_1HzOut)
);
divn#(.WIDTH(17),.N(100000))
u1(.clk(CLOCK_50),
.rst_n(ncR),
.o_clk(_500HzOut)
);
divn#(.WIDTH(16),.N(50000))
u2(.clk(CLOCK_50),
.rst_n(ncR),
.o_clk(_1KHzOut)
);
divn#(.WIDTH(24),.N())
u3(.clk(CLOCK_50),
.rst_n(ncR),
.o_clk(_5HzOut)
);
endmodule
moduledivn(o_clk,clk,rst_n);
inputclk,rst_n;
outputo_clk;
parameterWIDTH=3;
parameterN=6;
reg[WIDTH-1:
0]cnt_p;
reg[WIDTH-1:
0]cnt_n;
regclk_p;
regclk_n;
assigno_clk=(N==1)
clk:
(N[0](clk_p|clk_n):
clk_p);
always@(posedgeclkornegedgerst_n)
begin
if(!
rst_n)
cnt_p<=0;
elseif(cnt_p==N-1)
cnt_p<=0;
else
cnt_p<=cnt_p+1;
end
always@(posedgeclkornegedgerst_n)
begin
if(!
rst_n)
clk_p<=0;
elseif(cnt_p<(N>>1))
clk_p<=1;
else
clk_p<=0;
end
always@(negedgeclkornegedgerst_n)
begin
if(!
rst_n)
cnt_n<=0;
elseif(cnt_n==N-1)
cnt_n<=0;
else
cnt_n<=cnt_n+1;
end
always@(negedgeclkornegedgerst_n)
begin
if(!
rst_n)
clk_n<=0;
elseif(cnt_n<(N>>1))
clk_n<=1;
else
clk_n<=0;
end
endmodule
2、译码程序
moduledecode4_7(
input[3:
0]indec_0,indec_1,indec_2,indec_3,indec_4,indec_5,indec_6,indec_7,
outputreg[6:
0]dout_0,dout_1,dout_2,dout_3,dout_4,dout_5,dout_6,dout_7
);
always@(indec_0orindec_1orindec_2orindec_3orindec_4orindec_5orindec_6orindec_7)
begin
case(indec_0)
4'h1:
dout_0=7'b111_1001;//---0----
4'h2:
dout_0=7'b010_0100;//||
4'h3:
dout_0=7'b011_0000;//51
4'h4:
dout_0=7'b001_1001;//||
4'h5:
dout_0=7'b001_0010;//---6----
4'h6:
dout_0=7'b000_0010;//||
4'h7:
dout_0=7'b111_1000;//42
4'h8:
dout_0=7'b000_0000;//||
4'h9:
dout_0=7'b001_1000;//---3----
4'ha:
dout_0=7'b000_1000;
4'hb:
dout_0=7'b000_0011;
4'hc:
dout_0=7'b100_0110;
4'hd:
dout_0=7'b010_0001;
4'he:
dout_0=7'b000_0110;
4'hf:
dout_0=7'b000_1110;
4'h0:
dout_0=7'b100_0000;
endcase
case(indec_1)
4'h1:
dout_1=7'b111_1001;//---0----
4'h2:
dout_1=7'b010_0100;//||
4'h3:
dout_1=7'b011_0000;//51
4'h4:
dout_1=7'b001_1001;//||
4'h5:
dout_1=7'b001_0010;//---6----
4'h6:
dout_1=7'b000_0010;//||
4'h7:
dout_1=7'b111_1000;//42
4'h8:
dout_1=7'b000_0000;//||
4'h9:
dout_1=7'b001_1000;//---3----
4'ha:
dout_1=7'b000_1000;
4'hb:
dout_1=7'b000_0011;
4'hc:
dout_1=7'b100_0110;
4'hd:
dout_1=7'b010_0001;
4'he:
dout_1=7'b000_0110;
4'hf:
dout_1=7'b000_1110;
4'h0:
dout_1=7'b100_0000;
endcase
case(indec_2)
4'h1:
dout_2=7'b111_1001;//---0----
4'h2:
dout_2=7'b010_0100;//||
4'h3:
dout_2=7'b011_0000;//51
4'h4:
dout_2=7'b001_1001;//||
4'h5:
dout_2=7'b001_0010;//---6----
4'h6:
dout_2=7'b000_0010;//||
4'h7:
dout_2=7'b111_1000;//42
4'h8:
dout_2=7'b000_0000;//||
4'h9:
dout_2=7'b001_1000;//---3----
4'ha:
dout_2=7'b000_1000;
4'hb:
dout_2=7'b000_0011;
4'hc:
dout_2=7'b100_0110;
4'hd:
dout_2=7'b010_0001;
4'he:
dout_2=7'b000_0110;
4'hf:
dout_2=7'b000_1110;
4'h0:
dout_2=7'b100_0000;
endcase
case(indec_3)
4'h1:
dout_3=7'b111_1001;//---0----
4'h2:
dout_3=7'b010_0100;//||
4'h3:
dout_3=7'b011_0000;//51
4'h4:
dout_3=7'b001_1001;//||
4'h5:
dout_3=7'b001_0010;//---6----
4'h6:
dout_3=7'b000_0010;//||
4'h7:
dout_3=7'b111_1000;//42
4'h8:
dout_3=7'b000_0000;//||
4'h9:
dout_3=7'b001_1000;//---3----
4'ha:
dout_3=7'b000_1000;
4'hb:
dout_3=7'b000_0011;
4'hc:
dout_3=7'b100_0110;
4'hd:
dout_3=7'b010_0001;
4'he:
dout_3=7'b000_0110;
4'hf:
dout_3=7'b000_1110;
4'h0:
dout_3=7'b100_0000;
endcase
case(indec_4)
4'h1:
dout_4=7'b111_1001;//---0----
4'h2:
dout_4=7'b010_0100;//||
4'h3:
dout_4=7'b011_0000;//51
4'h4:
dout_4=7'b001_1001;//||
4'h5:
dout_4=7'b001_0010;//---6----
4'h6:
dout_4=7'b000_0010;//||
4'h7:
dout_4=7'b111_1000;//42
4'h8:
dout_4=7'b000_0000;//||
4'h9:
dout_4=7'b001_1000;//---3----
4'ha:
dout_4=7'b000_1000;
4'hb:
dout_4=7'b000_0011;
4'hc:
dout_4=7'b100_0110;
4'hd:
dout_4=7'b010_0001;
4'he:
dout_4=7'b000_0110;
4'hf:
dout_4=7'b000_1110;
4'h0:
dout_4=7'b100_0000;
endcase
case(indec_5)
4'h1:
dout_5=7'b111_1001;//---0----
4'h2:
dout_5=7'b010_0100;//||
4'h3:
dout_5=7'b011_0000;//51
4'h4:
dout_5=7'b001_1001;//||
4'h5:
dout_5=7'b001_0010;//---6----
4'h6:
dout_5=7'b000_0010;//||
4'h7:
dout_5=7'b111_1000;//42
4'h8:
dout_5=7'b000_0000;//||
4'h9:
dout_5=7'b001_1000;//---3----
4'ha:
dout_5=7'b000_1000;
4'hb:
dout_5=7'b000_0011;
4'hc:
dout_5=7'b100_0110;
4'hd:
dout_5=7'b010_0001;
4'he:
dout_5=7'b000_0110;
4'hf:
dout_5=7'b000_1110;
4'h0:
dout_5=7'b100_0000;
endcase
case(indec_6)
4'h1:
dout_6=7'b111_1001;//---0----
4'h2:
dout_6=7'b010_0100;//||
4'h3:
dout_6=7'b011_0000;//51
4'h4:
dout_6=7'b001_1001;//||
4'h5:
dout_6=7'b001_0010;//---6----
4'h6:
dout_6=7'b000_0010;//||
4'h7:
dout_6=7'b111_1000;//42
4'h8:
dout_6=7'b000_0000;//||
4'h9:
dout_6=7'b001_1000;//---3----
4'ha:
dout_6=7'b000_1000;
4'hb:
dout_6=7'b000_0011;
4'hc:
dout_6=7'b100_0110;
4'hd:
dout_6=7'b010_0001;
4'he:
dout_6=7'b000_0110;
4'hf:
dout_6=7'b000_1110;
4'h0:
dout_6=7'b100_0000;
endcase
case(indec_7)
4'h1:
dout_7=7'b111_1001;//---0----
4'h2:
dout_7=7'b010_0100;//||
4'h3:
dout_7=7'b011_0000;//51
4'h4:
dout_7=7'b001_1001;//||
4'h5:
dout_7=7'b001_0010;//---6----
4'h6:
dout_7=7'b000_0010;//||
4'h7:
dout_7=7'b111_1000;//42
4'h8:
dout_7=7'b000_0000;//||
4'h9:
dout_7=7'b001_1000;//---3----
4'ha:
dout_7=7'b000_1000;
4'hb:
dout_7=7'b000_0011;
4'hc:
dout_7=7'b100_0110;
4'hd:
dout_7=7'b010_0001;
4'he:
dout_7=7'b000_0110;
4'hf:
dout_7=7'b000_1110;
4'h0:
dout_7=7'b100_0000;
endcase
end
endmodule
3、管脚分配图:
HEX0[6]
Output
PIN_H22
6
B6_N0
V
HEX0[5]
Output
PIN_J22
6
B6_N0
V
HEX0[4]
Output
PIN_L25
6
B6_N1
V
HEX0[3]
Output
PIN_L26
6
B6_N1
V
HEX0[2]
Output
PIN_E17
7
B7_N2
V
HEX0[1]
Output
PIN_F22
7
B7_N0
V
HEX0[0]
Output
PIN_G18
7
B7_N2
V
HEX1[6]
Output
PIN_U24
5
B5_N0
V
HEX1[5]
Output
PIN_U23
5
B5_N1
V
HEX1[4]
Output
PIN_W25
5
B5_N1
V
HEX1[3]
Output
PIN_W22
5
B5_N0
V
HEX1[2]
O
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 课程设计 报告