武汉工程大学FPGA实验报告.docx
《武汉工程大学FPGA实验报告.docx》由会员分享,可在线阅读,更多相关《武汉工程大学FPGA实验报告.docx(28页珍藏版)》请在冰点文库上搜索。
武汉工程大学FPGA实验报告
武汉工程大学
电气信息学院
《FPGA与硬件描述语言》实验报告[1]
专业班级
14通信03班
实验时间
2016年10月12日
学生学号
1404201114
实验地点
4B315
学生姓名
秦重双
指导教师
曹新莉
实验项目
闪烁的LED
实验类别
基础实验
实验学时
4学时
实验目的及要求
1.掌握QuartusII设计电路的基本流程,熟悉VHDL程序,分别设计分频电路,LED闪烁延时计数程序。
2.将设计好的LED闪烁电路程序下载到DEII开发板上进行实物测试。
成绩评定表
类别
评分标准
分值
得分
合计
上机表现
按时出勤、遵守纪律
认真完成各项实验内容
30分
报告质量
程序代码规范、功能正确
填写内容完整、体现收获
70分
说明:
评阅教师:
日期:
2015年12月1日
实验内容
(说明:
此部分应包含:
实验内容、实验步骤、实验数据与分析过程等)
一、实验内容
1.用VHDL语言设计分频器,得到0.1Hz——1Hz的时钟信号;
2.设计闪烁延时程序,控制发光二极管的闪烁。
二、实验方法与步骤
分频电路的产生
1.分频原理:
(50MHz晶振信号怎样分频成你所需要的低频信号。
)
晶振信号经过一次50分频得到1MHz信号,再经过三次100分频可得到1Hz信号,0.1Hz信
号可由1Hz信号经10分频得到
2.50分频器:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT50IS
PORT(CLK,RST,EN:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(5DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDCNT50;
ARCHITECTUREbehavOFcnt50IS
BEGIN
PROCESS(CLK,RST,EN)
VARIABLEQ:
STD_LOGIC_VEcTOR(5DOWNTO0);
BEGIN
IFRST='0'THENQ:
=(OTHERS=>'0');
ELSIFCLK'EVENTANDCLK='1'THEN
IFEN='1'THEN
IFQ<49THENQ:
=Q+1;
ELSEQ:
=(OTHERS=>'0');
ENDIF;
ENDIF;
ENDIF;
IFQ="110001"THENCOUT<='1';
ELSECOUT<='0';
ENDIF;
DOUT<=Q;
ENDPROCESS;
ENDbehav;
3.100分频器:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT100IS
PORT(CLK,RST,EN:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDCNT100;
ARCHITECTUREbehavOFcnt100IS
BEGIN
PROCESS(CLK,RST,EN)
VARIABLEQ:
STD_LOGIC_VEcTOR(6DOWNTO0);
BEGIN
IFRST='0'THENQ:
=(OTHERS=>'0');
ELSIFCLK'EVENTANDCLK='1'THEN
IFEN='1'THEN
IFQ<99THENQ:
=Q+1;
ELSEQ:
=(OTHERS=>'0');
ENDIF;
ENDIF;
ENDIF;
IFQ="1100011"THENCOUT<='1';
ELSECOUT<='0';
ENDIF;
DOUT<=Q;
ENDPROCESS;
ENDbehav;
4.LED闪烁定时电路:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
ENTITY cnt5 IS PORT ( clk:
IN STD_LOGIC;
en:
IN STD_LOGIC;
clr:
IN STD_LOGIC;
cout:
OUT STD_LOGIC;
q:
buffer STD_LOGIC_VECTOR(2 DOWNTO 0) );
END cnt5;
ARCHITECTURE SYN OF cnt5 IS
BEGIN
process(clk,clr)
begin
if clr='1' then q<="000";
elsif clk'event and clk='1' then
if en='1' then
if q="100" then q<="000";
else q<=q+1;
end if;
end if;
end if;
if q="100" then cout<='1';
else cout<='0';
end if;
end process;
END SYN;
5.顶层文件,将所有底层原件集成为顶层设计文件:
三、实验数据与结果分析
测试结果:
LED灯每隔一定时间闪烁一次。
实验总结
(说明:
总结实验认识、过程、效果、问题、收获、体会、意见和建议。
)
武汉工程大学
电气信息学院
《FPGA与硬件描述语言》实验报告[2]
专业班级
14通信03班
实验时间
2016年10月19日
学生学号
1404201114
实验地点
4B315
学生姓名
秦重双
指导教师
曹新莉
实验项目
从左到右的流水灯
实验类别
基础实验
实验学时
4学时
实验目的及要求
1.接在fpga的8个LED从左到右循环依次点亮,产生走马灯效果
2.深入掌握晶振分频的原理,并实现;
3.通过设计计数器的不同计数值,来控制若干个发光二极管的逐次点亮。
成绩评定表
类别
评分标准
分值
得分
合计
上机表现
按时出勤、遵守纪律
认真完成各项实验内容
30分
报告质量
程序代码规范、功能正确
填写内容完整、体现收获
70分
说明:
评阅教师:
日期:
2015年月日
实验内容
(说明:
此部分应包含:
实验内容、实验步骤、实验数据与分析过程等)
一、实验内容
1.接在fpga的8个(或者更多个)LED从左到右循环依次点亮,产生流水灯效果
2.深入掌握晶振分频的原理,并实现;
3.通过设计计数器的不同计数值,来控制若干个发光二极管的逐次点亮。
二、实验方法与步骤
1.深入掌握晶振分频的原理,并实现;
由于实验开发板上使用的是50MHz的晶振,所以先将晶振分频的到1Hz的信号供后来使用,同样采用一个50分频和三个100分频。
2.通过设计计数器的不同计数值,来控制若干个发光二极管的逐次点亮。
CNT50源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT50IS
PORT(CLK,RST,EN:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(5DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDCNT50;
ARCHITECTUREbehavOFcnt50IS
BEGIN
PROCESS(CLK,RST,EN)
VARIABLEQ:
STD_LOGIC_VEcTOR(5DOWNTO0);
BEGIN
IFRST='0'THENQ:
=(OTHERS=>'0');
ELSIFCLK'EVENTANDCLK='1'THEN
IFEN='1'THEN
IFQ<49THENQ:
=Q+1;
ELSEQ:
=(OTHERS=>'0');
ENDIF;
ENDIF;
ENDIF;
IFQ="110001"THENCOUT<='1';
ELSECOUT<='0';
ENDIF;
DOUT<=Q;
ENDPROCESS;
ENDbehav;
CNT100源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT100IS
PORT(CLK,RST,EN:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDCNT100;
ARCHITECTUREbehavOFcnt100IS
BEGIN
PROCESS(CLK,RST,EN)
VARIABLEQ:
STD_LOGIC_VEcTOR(6DOWNTO0);
BEGIN
IFRST='0'THENQ:
=(OTHERS=>'0');
ELSIFCLK'EVENTANDCLK='1'THEN
IFEN='1'THEN
IFQ<99THENQ:
=Q+1;
ELSEQ:
=(OTHERS=>'0');
ENDIF;
ENDIF;
ENDIF;
IFQ="1100011"THENCOUT<='1';
ELSECOUT<='0';
ENDIF;
DOUT<=Q;
ENDPROCESS;
ENDbehav;
CNT8源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT8IS
PORT(CLK,RST,EN:
INSTD_LOGIC;
COUT:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0);
CO:
OUTSTD_LOGIC);
ENDCNT8;
ARCHITECTUREBEHOFCNT8IS
BEGIN
PROCESS(CLK,RST,EN)
BEGIN
IFRST='1'THENCOUT<="000";
ELSIFCLK'EVENTANDCLK='1'THEN
IFEN='1'THEN
IFCOUT<"111"THENCOUT<=COUT+1;
ELSECOUT<="000";
ENDIF;
ENDIF;
ENDIF;
IFCOUT="111"THENCO<='1';
ELSECO<='0';
ENDIF;
ENDPROCESS;
ENDBEH;
3-8译码器源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYSANBAYIMAQI38IS
PORT(A:
INSTD_LOGIC_VECTOR(2DOWNTO0);
COUT:
OUTBIT_VECTOR(7DOWNTO0));
ENDSANBAYIMAQI38;
ARCHITECTUREBEHOFSANBAYIMAQI38IS
BEGIN
COUT(0)<='1'WHENA="000"ELSE'0';
COUT
(1)<='1'WHENA="001"ELSE'0';
COUT
(2)<='1'WHENA="010"ELSE'0';
COUT(3)<='1'WHENA="011"ELSE'0';
COUT(4)<='1'WHENA="100"ELSE'0';
COUT(5)<='1'WHENA="101"ELSE'0';
COUT(6)<='1'WHENA="110"ELSE'0';
COUT(7)<='1'WHENA="111"ELSE'0';
ENDBEH;
三、实验数据与结果分析
测试结果:
流水灯每隔一秒,从右向左点亮,当复位开关掰下时,led灯自动跳回最右边。
实验总结
(说明:
总结实验认识、过程、效果、问题、收获、体会、意见和建议。
)
武汉工程大学
电气信息学院
《FPGA与硬件描述语言》实验报告[3]
专业班级
14通信03班
实验时间
2016年10月26日
学生学号
1404201114
实验地点
4B315
学生姓名
秦重双
指导教师
曹新莉
实验项目
单只数码管循环显示0~F;8只数码管动态显示多个不同字符。
实验类别
基础实验
实验学时
4学时
实验目的及要求
1.掌握晶振芯片的分频过程及原理。
2.设计共阴极和共阳极七段数码管的显示原理,编写驱动译码VHDL代码。
3.通过时序控制,令单只数码管循环显示,形成流水灯的效果,并可以改变显示的时间。
4.8只数码管动态显示多个不同字符,数码管动态扫描显示0~7。
成绩评定表
类别
评分标准
分值
得分
合计
上机表现
按时出勤、遵守纪律
认真完成各项实验内容
30分
报告质量
程序代码规范、功能正确
填写内容完整、体现收获
70分
说明:
评阅教师:
日期:
2015年月日
实验内容
(说明:
此部分应包含:
实验内容、实验步骤、实验数据与分析过程等)
一、实验内容
1.掌握晶振芯片的分频过程及原理。
2.设计共阴极和共阳极七段数码管的显示原理,编写驱动译码VHDL代码。
3.通过时序控制,令单只数码管循环显示0——F,并可以改变显示的时间。
4.8只数码管动态显示多个不同字符,数码管动态扫描显示0~7。
二、实验方法与步骤
1.对晶振芯片进行分频:
从50MHZ分频到1Hz。
CNT16源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT16IS
PORT(CLK,RST,EN:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDCNT16;
ARCHITECTUREbehavOFcnt16IS
BEGIN
PROCESS(CLK,RST,EN)
VARIABLEQ:
STD_LOGIC_VEcTOR(3DOWNTO0);
BEGIN
IFRST='0'THENQ:
=(OTHERS=>'0');
ELSIFCLK'EVENTANDCLK='1'THEN
IFEN='1'THEN
IFQ<15THENQ:
=Q+1;
ELSEQ:
=(OTHERS=>'0');
ENDIF;
ENDIF;
ENDIF;
IFQ="1111"THENCOUT<='1';
ELSECOUT<='0';
ENDIF;
DOUT<=Q;
ENDPROCESS;
ENDbehav;
CNT50源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT50IS
PORT(CLK,RST,EN:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(5DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDCNT50;
ARCHITECTUREbehavOFcnt50IS
BEGIN
PROCESS(CLK,RST,EN)
VARIABLEQ:
STD_LOGIC_VEcTOR(5DOWNTO0);
BEGIN
IFRST='0'THENQ:
=(OTHERS=>'0');
ELSIFCLK'EVENTANDCLK='1'THEN
IFEN='1'THEN
IFQ<49THENQ:
=Q+1;
ELSEQ:
=(OTHERS=>'0');
ENDIF;
ENDIF;
ENDIF;
IFQ="110001"THENCOUT<='1';
ELSECOUT<='0';
ENDIF;
DOUT<=Q;
ENDPROCESS;
ENDbehav;
CNT100源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT100IS
PORT(CLK,RST,EN:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDCNT100;
ARCHITECTUREbehavOFcnt100IS
BEGIN
PROCESS(CLK,RST,EN)
VARIABLEQ:
STD_LOGIC_VEcTOR(6DOWNTO0);
BEGIN
IFRST='0'THENQ:
=(OTHERS=>'0');
ELSIFCLK'EVENTANDCLK='1'THEN
IFEN='1'THEN
IFQ<99THENQ:
=Q+1;
ELSEQ:
=(OTHERS=>'0');
ENDIF;
ENDIF;
ENDIF;
IFQ="1100011"THENCOUT<='1';
ELSECOUT<='0';
ENDIF;
DOUT<=Q;
ENDPROCESS;
ENDbehav;
2.设计共阴极和共阳极七段数码管的显示原理,编写驱动译码VHDL代码:
共阴极
ARCHITECTUREoneOFDECL7SIS
BEGIN
PROCESS(A)BEGIN
CASEAIS
WHEN"0000"=>LED7S<="1000000";
WHEN"0001"=>LED7S<="1111001";
WHEN"0010"=>LED7S<="0100100";
WHEN"0011"=>LED7S<="0110000";
WHEN"0100"=>LED7S<="0011001";
WHEN"0101"=>LED7S<="0010010";
WHEN"0110"=>LED7S<="0000010";
WHEN"0111"=>LED7S<="1111000";
WHEN"1000"=>LED7S<="0000000";
WHEN"1001"=>LED7S<="0010000";
WHEN"1010"=>LED7S<="0001000";
WHEN"1011"=>LED7S<="0000011";
WHEN"1100"=>LED7S<="1000110";
WHEN"1101"=>LED7S<="0100001";
WHEN"1110"=>LED7S<="0000110";
WHEN"1111"=>LED7S<="0001110";
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESS;
END;
3.通过时序控制,令单只数码管循环显示,形成流水灯的效果,并可以改变显示的时间。
4.8只数码管动态显示多个不同字符,数码管动态扫描显示0~7。
三、实验数据与结果分析
实验总结
(说明:
总结实验认识、过程、效果、问题、收获、体会、意见和建议。
)
武汉工程大学
电气信息学院
《FPGA与硬件描述语言》实验报告[4]
专业班级
14通信03班
实验时间
2016年11月02日
学生学号
1404201114
实验地点
4B315
学生姓名
秦重双
指导教师
曹新莉
实验项目
100计数器并数码管显示
实验类别
基础实验
实验学时
4学时
实验目的及要求
1.掌握晶振芯片的分频过程及原理。
2.设计100计数器的时序电路,编写VHDL代码。
3.通过时序控制,用三个数码管显示100计数器的计数值
4.下载到开发板上进行验证。
成绩评定表
类别
评分标准
分值
得分
合计
上机表现
按时出勤、遵守纪律
认真完成各项实验内容
30分
报告质量
程序代码规范、功能正确
填写内容完整、体现收获
70分
说明:
评阅教师:
日期:
2015年月日
实验内容
(说明:
此部分应包含:
实验内容、实验步骤、实验数据与分析过程等)
一、实验内容
1.掌握晶振芯片的分频过程及原理。
2.设计100计数器的时序电路,编写VHDL代码。
3.通过时序控制,用三个数码管显示100计数器的计数值
4.下载到开发板上进行验证。
二、实验方法与步骤
1.掌握晶振芯片的分频过程及原理。
分频就是将晶振的高频率分频成所需要的频率,