数字电路与数字逻辑大型实验报告Word格式文档下载.docx
- 文档编号:21281624
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:16
- 大小:1.49MB
数字电路与数字逻辑大型实验报告Word格式文档下载.docx
《数字电路与数字逻辑大型实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数字电路与数字逻辑大型实验报告Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
各信号之间的时序关系如下图所示:
被测信号:
闸门信号:
计数脉冲:
清零信号:
锁存信号:
图2.数字频率计工作时序
3.顶层原理图设计
图3.4位数字频率计顶层原理图
说明:
根据数字频率计的工作原理和设计方案,可得到如图3所示的4位数字频率计的顶层设计原理图。
原理图包括计数器CNT10、锁存器LATCH4、显示译码器LED7S、控制器CONTROL四种底层模块。
4个十进制计数器CNT10级联构成10000进制计数器,使频率计的测量范围达到0000Hz~9999Hz。
CNT10的输出送锁存器LATCH4,LATCH4的输出送显示译码器LED7S。
LED7S的输出驱动7段LED数码管。
CONTROL用于产生图3中所示的清零信号CLR、闸门信号CS、锁存信号LE三种控制信号。
4.底层模块仿真
(1)CNT10模块
CNT10的VHDL语言:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycnt10is
port(clk:
instd_logic;
clr:
cs:
qq:
bufferstd_logic_vector(3downto0);
co:
outstd_logic
);
endcnt10;
architectureoneofcnt10is
begin
process(clk,clr,cs)
begin
if(clr='
1'
)then
qq<
="
0000"
;
elsif(clk'
eventandclk='
if(cs='
if(qq=9)then
qq<
else
=qq+1;
endif;
endprocess;
process(qq)
if(qq=9)then
co<
='
0'
endone;
CNT10模块的逻辑符号:
CNT10模块的仿真:
CNT10模块说明:
CNT10模块为十进制加法计数器模块,具有计数、异步清零、计数使能、进位输出功能。
异步清零功能是为了闸门信号有效之前将计数器清零。
计数使能由闸门信号控制,闸门信号高电平时允许计数,低电平时停止计数(保持状态)。
进位输出是用于计数器之间的级联,即前级计数器的进位输出作为后级计数器的时钟输入。
需要指出的是,由于CNT10模块采用时钟的上升沿计数,计数器的进位输出应采用负脉冲,避免后级计数器提前加1计数。
(2)LATCH4模块
LATCH4的VHDL语言:
entitylatch4is
port(le:
dd:
instd_logic_vector(3downto0);
outstd_logic_vector(3downto0)
endlatch4;
architectureoneoflatch4is
process(le,dd)
if(le='
)then
=dd;
endif;
LATCH4模块的逻辑符号:
LATCH4模块的仿真:
LATCH4模块说明:
LATCH4模块为4位锁存器模块,在锁存信号的高电平期间,锁存器输出跟
随输入变化,在锁存信号的下降沿,将输入值锁存,输出值保持不变。
(3)CONTROL模块
CONTROL的VHDL语言:
entitycontrolis
port(clk:
instd_logic;
cs,clr,le:
outstd_logic);
endcontrol;
architecturebehaveofcontrolis
signalcurrent_state,next_state:
std_logic_vector(3downto0);
constantst0:
std_logic_vector:
constantst1:
0001"
constantst2:
0011"
constantst3:
0010"
constantst4:
0110"
constantst5:
1110"
constantst6:
1111"
constantst7:
1101"
constantst8:
1100"
constantst9:
1000"
com1:
process(current_state)
casecurrent_stateis
whenst0=>
next_state<
=st1;
clr<
cs<
le<
whenst1=>
=st2;
whenst2=>
=st3;
whenst3=>
=st4;
whenst4=>
=st5;
whenst5=>
=st6;
whenst6=>
=st7;
whenst7=>
=st8;
whenst8=>
=st9;
whenst9=>
=st0;
whenothers=>
endcase;
endprocesscom1;
reg:
process(clk)
if(clk'
current_state<
=next_state;
endprocessreg;
endbehave;
CONTROL模块的逻辑符号:
CONTROL模块的仿真:
CONTROL模块说明:
控制模块CONTROL用于产生满足图2所示时序要求的控制信号。
状态机的
状态编码采用格雷码,以消除状态译码时由于竞争冒险产生的干扰窄脉冲。
通
过状态译码产生三个控制信号:
第0状态时,清零信号(CLR)置为高电平;
第
1~8状态时,闸门信号(cs)置为高电平,闸门信号的高电平持续时间等于8
个状态维持时间,因此,其脉冲宽度刚好为1s;
第9状态时,锁存信号(LE)
置为高电平。
(4)LED7S模块
LED7S的VHDL语言:
entityled7sis
port(din:
y:
outstd_logic_vector(6downto0)
);
end;
architectureoneofled7sis
process(din)
casedinis
when"
=>
y<
1000000"
1111001"
0100100"
0110000"
0100"
0011001"
0101"
0010010"
0000010"
0111"
1111000"
0000000"
1001"
0010000"
1010"
0001000"
1011"
0000011"
1000110"
0100001"
0000110"
0001110"
whenothers=>
=null;
endcase;
endprocess;
LED7S模块的逻辑符号:
LED7S模块的仿真:
LED7S模块说明:
LED7S为显示译码器,是将BCD码译成驱动数码管所需代码的译码器。
顶层原理的仿真:
5.引脚锁定和下载测试
(1)引脚锁定:
实验截图:
操作步骤:
、选择Assignments→Pin命令,打开引脚锁定窗口;
、用鼠标双击‘Location’栏中的空白处,在出现的下拉栏中选择把对应端
口信号名的器件引脚号。
用相同的方法依次把所有的计数器输出锁定到相
应的引脚。
(注意:
该实验板采用的FPGA型号为EP2C3F672C8,该芯片的总引脚数远大于频率计所需的引脚,为了避免未用引脚对其他电路产生影响,在编译之前应将EP2C3F672C8未用的I/O引脚设为‘输入高阻’。
具体操作:
、选择Assignments→Device;
、单击‘Device&
PinOption’按钮;
、单击‘UnusedPins’,在对话框中选择‘Asinputtri-stated’按‘确定键’。
)
、对工程重新编译,以将引脚对应关系存入设计。
(2)下载测试:
实验板的实验照片:
、用USB下载电缆将PC机与实验板连接,合上电源开关;
、选择Tool→Programmer菜单,进入下载和编辑窗口;
、单击编辑窗口左上方的‘HardwareSetup’按钮,在打开的窗口中选择
‘USB-Blaster’;
、在编辑模式‘Mode’中选择‘JTAG’,并用鼠标选中Program/Configure
下方的小方框;
、单击‘Start’按钮,开始下载,当‘Progress’显示100%时,下载结束。
四、实验总结
本次数字电路大型实验让我颇有体会,不仅让我们掌握了VHDL语言,而且还让我们学会了Quartus
的使用,从中我们知道了如何利用VHDL语言构建模块、如何进行模块的仿真、如何进行顶层原理的设计等这些使我们受益良多,同时还让我们学会了硬件电路设计的又一种新的方法。
并且通过这次实验的亲身操作,增强了我们自己的动手能力,也提高了我们的学习能力,以后如果碰到硬件电路的设计,就会轻松的多,就可以用现在学过的知识运用到实践中去。
不过在实验中,我也碰到了一些问题,例如,在构建原理图编译时碰到有错误的问题,这时可能是由于原理图中线没连好的缘故而不是VHDL语言的错误造成的。
当时我们碰到这个问题时一直以为是某一模块的VHDL语言出现问题,于是一直在对VHDL语言进行检查,后来才知道我们是受C++这些语言影响太大,一有错就以为是代码的问题,而忽略了电路图的问题。
(其实VHDL语言在模块的编译时如果没有报错,那在以后的原理图的使用时一般也不会报错)
最后的建议就是:
如果能够在平时多一点VHDL语言的教学就更好了,我们这次实验的模块的编写基本是照本宣科,就是在重复把书上的代码转移到电脑里,其实我们对各个模块的VHDL为什么要这么编写,为什么这样就能表示出他们的功能基本不知道,所以如果在平时多一点这方面的教学,再通过这次大型实验,那我们基本上就能掌握VHDL语言的基本应用,这样更有实践性。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字电路 数字 逻辑 大型 实验 报告