数字逻辑课程设计报告(优秀版)

  • 格式: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]