数字逻辑课程设计报告(优秀版)
- 格式:doc
- 大小:116.50 KB
- 文档页数:12
数字逻辑课程设计报告
1 目录
目录……………………………………………………………………………………1
一、 设计目的………………………………………………………………………2
二、 设计要求………………………………………………………………………2
三、 设计方案………………………………………………………………………2
四、 顶层图及相关模块说明………………………………………………………3
1、 顶层图…………………………………………………………………………3
2、 各模块说明
(1)进制模块…………………………………………………………………………..3
a、 二十四进制……………………………………………………………………5
b、 六十进制………………………………………………………………………5
(1)动态扫描模块……………………………………………………………………..6
(2)分频模块…………………………………………………………………………..8
(3)报时模块…………………………………………………………………………..9
(4)二路选择器模块…………………………………………………………………10
五、经验总结………………………………………………………………………...12
数字逻辑课程设计报告
2 一、设计目的
1. 学会应用数字系统设计方法进行电路设计;
2. 进一步提高QuartusⅡ9.0软件的开发应用能力;
3. 培养学生书写综合实验报告的能力。
二、设计要求
1、能进行正常的时、分、秒计时,用动态扫描的方式显示,需用6个数码管。
(1)用M6M5进行24进制小时的显示。
(2)用M4M3进行60进制分的显示。
(3)用M2M1进行60进制秒的显示。
2、利用按键实现“校时”、 “校分”和“秒清0”功能。
(1)SA:校时键。按下SA键时,时计数器迅速递增,按24小时循环,并且计满23时回到00。
(2)SB:校分键。按下SB键时,分计数器迅速递增,按60小时循环,并且计满59时回到00,但不向时进位。
(3)SC:秒清零。按下SC时,秒计数器清零。
要求按键均不产生数字跳变,因此须对“SA”、“SB”进行消抖处理。
3、能进行整点报时。
(1)在59分50、52、54、56、58秒按500Hz频率报时;
(2)在59分60秒用1KHz的频率作最后一声正点报时。
4、更高要求:能进行闹时功能
(1) 闹时的最小时间间隙为10分钟,闹时长度为1分钟。闹时频率可以自己设置。
(2) 按下闹时按键SD后,将一个闹时时间数存入计数器内。时钟正常运行时,闹时时间和运行的时间进行比较,当比较结果相同时输出一个启动信号,触发闹时电路工作,输出音频信号。
三、设计方案
1、按自顶向下的层次化设计方法设计。
(1)顶层图
(2)消抖电路用D触发器构成,SA、SB、SC为包含抖动的输入信号,而电路的输出则是一个边沿整齐的输出信号。
(3)计时(24进制计数器),计分(60进制计数器)、计秒(60进制计数器)模块可由10进制计数器连接构成,也可用VHDL语言完成。10进制计数器需自己设计(用VHDL语言,与所做实验74160计数器相同),不能调用系统库。
(4) 其他如分频电路、提供报时控制信号、闹时电路等模块用VHDL语言实现。
(5) 数字显示采用动态扫描的方式,原理参考课本P212图6-23。也可以采用VHDL编写。
数字逻辑课程设计报告
3 四、顶层图及相关模块说明
1、顶层图
VCCsaINPUTVCCsbINPUTVCCscINPUTVCCcpINPUTselout2OUTPUTselout1OUTPUTselout0OUTPUTsegout5OUTPUTsegout4OUTPUTsegout3OUTPUTsegout2OUTPUTsegout1OUTPUTsegout0OUTPUTsegout6OUTPUTspeakerOUTPUTCLRNDPRNQDFFinstCLRNDPRNQDFFinst3CLRNDPRNQDFFinst4NOTinst5NOTinst6NOTinst7absymux21inst8absymux21inst9NAND2inst10NOTinst11clkcountql3qh3ql2qh2ql1qh1ql0qh0count24inst12clkclrcountQL3QH3QL2QH2QL1QH1QL0QH0count60inst13clkclrcountQL3QH3QL2QH2QL1QH1QL0QH0count60inst14VCCclks[7..0]f[7..0]m[7..0]selout[2..0]segout[6..0]dtsminst18m1[3..0]m0[3..0]s1[3..0]s0[3..0]sig500sig1kalertinst30AND2inst31AND2inst32OR2inst33clkhz512hz256hz64hz4hz1fryinst34PIN_J4PIN_A12PIN_B12PIN_B15PIN_H3PIN_H4PIN_K5PIN_L5PIN_K4PIN_L3PIN_L4PIN_G4PIN_G3PIN_F4PIN_N6s[3]s[7]s[2]s[6]s[1]s[5]s[0]s[4]f[3]f[7]f[2]f[6]f[1]f[5]f[0]f[4]m[3]m[7]m[2]m[6]m[1]m[5]m[0]m[4]q512q512f[7..4]f[3..0]m[7..4]m[3..0]s[7..0]f[7..0]m[7..0]selout[2..0]segout[6..0]selout[2]selout[1]selout[0]segout[6]segout[5]segout[4]segout[3]segout[2]segout[1]segout[0]
模块分析:程序下载后自动进入及时状态,sa、sb、sc分别控制时、分、秒。
2、各模块说明
(1)进制模块
十进制源程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity ls160 is
port
(
data : in std_logic_vector(3 downto 0);
clk,ld,p,t,clr : in std_logic;
count : buffer std_logic_vector(3 downto 0);
tc:out std_logic);
end ls160; 数字逻辑课程设计报告
4 architecture behavior of ls160 is
begin
tc<='1' when (count ="1001" and p='1' and t='1' and ld='1' and
clr='1') else '0';
cale:
process(clk,clr,p,t,ld)
begin
if(rising_edge(clk)) then
if(clk='1') then
if(ld='1') then
if(p='1') then
if(t='1') then
if(count="1001") then
count<="0000";
else
count<=count+1;
end if;
else
count<=count;
end if;
else
count<=count;
end if;
else
count<=data;
end if;
elsecount<="0000";
end if;
end if;
end process cale;
end behavior;
生成器件:
ls160instdata[3..0]clkidptclrcount[3..0]tc
数字逻辑课程设计报告
5 a、二十四进制
电路图:
VCCclkINPUTcountOUTPUTql3OUTPUTql2OUTPUTql1OUTPUTql0OUTPUTqh3OUTPUTqh2OUTPUTqh1OUTPUTqh0OUTPUTdata[3..0]clkidptclrcount[3..0]tcls160instGNDdata[3..0]clkidptclrcount[3..0]tcls160inst2NAND3inst5VCCql[3..0]qh[3..0]ql[3]qh[3]qh[1]ql[1]ql[0]ql[2]ql[1]ql[0]qh[2]qh[1]qh[0]
生成器件:
count24instclkcountql3qh3ql2qh2ql1qh1ql0qh0
b、六十进制
电路图:
VCCclkINPUTVCCclrINPUTcountOUTPUTQL3OUTPUTQL2OUTPUTQL1OUTPUTQL0OUTPUTQH3OUTPUTQH2OUTPUTQH1OUTPUTQH0OUTPUTdata[3..0]clkidptclrcount[3..0]tcls160instdata[3..0]clkidptclrcount[3..0]tcls160inst1GNDNAND4inst4ql[3..0]qh[3..0]ql[3]qh[3]qh[2]qh[0]ql[3]ql[0]ql[2]ql[1]ql[0]qh[2]qh[1]qh[0]