1、 数字系统综合设计 实验报告 实验题目: 模拟中央人民广播电台报时电路 姓名: 张晓奇 马良 学号: 20072306 20072312 设计内容: 1、实验要求: 1.1 计时器运行到59分49秒开始报时,每鸣叫1s就停叫1s,共鸣叫6响;前5响为低音,频率为750
2、HZ,最后1响为高音,频率为1KHz; 1.2要有分秒显示 2.1总电路图: CLK是时钟脉冲,通过次端口输入时钟信号,CLR是清零端口,置于高电平时起清零作用,CI是保持端口,置于低电平时起保持作用;ENM是校分端口,置于低电平是由时钟脉冲进行校分功能,ENH是校时端口,同ENM;speaker是报时端,在50、52、54、56、58秒/分时输出高电平。qsl【3..0】、qsh【3..0】,qml【3..0】、qmh【3..0】,qhl【3..0】、qhh【3..0】分别是秒的低位、高位,分的低位、高位,时的低位、高位数码管显示端。gaopin、dipin端分别是报时
3、信号频率输入端。 2.2模块设计: A. 60进制秒模块VHDL语言: library ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ENTITY sec60 IS PORT ( ci :IN std_logic; mclear :IN std_logic; clk :IN std_logic; co :out std_logic; qh
4、 :buffer std_logic_vector(3 downto 0); ql :buffer std_logic_vector(3 downto 0); a :out std_logic; b :out std_logic ); END sec60; ARCHITECTURE behave OF sec60 IS BEGIN co<='1'when (qh="0101" and ql="1001" and ci='1') else '0';
5、 a<='1' when (qh="0101" and ql="0000") else '1' when (qh="0101" and ql="0010") else '1' when (qh="0101" and ql="0100") else '1' when (qh="0101" and ql="0110") else '1' when (qh="0101" and ql="1000") else '0'; b<='1' when (qh="0000" and ql="0000") else '0'; PROCESS (clk
6、mclear) BEGIN IF(mclear='1')THEN qh<="0000"; ql<="0000"; elsif(clk'event and clk='1')then if(ci='1')then if(ql=9) then ql<="0000"; if(qh=5)then qh<="0000"; else qh<=qh+1; end if; else ql<=ql+1; end if; end if ; end if; end pro
7、cess; end behave; B. 60进制分模块VHDL语言: library ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ENTITY min60 IS PORT ( ci :IN std_logic; mclear :IN std_logic; clk :IN std_logic; co :out std_logic; qh
8、 :buffer std_logic_vector(3 downto 0); ql :buffer std_logic_vector(3 downto 0); a :out std_logic; b :out std_logic ); END min60; ARCHITECTURE behave OF min60 IS BEGIN co<='1'when (qh="0101" and ql="1001" and ci='1') else '0';
9、 a<='1' when (qh="0101" and ql="1001") else '0'; b<='1' when (qh="0000" and ql="0000") else '0'; PROCESS (clk,mclear) BEGIN IF(mclear='1')THEN qh<="0000"; ql<="0000"; elsif(clk'event and clk='1')then if(ci='1')then if(ql=9) then ql<="0000"; if(qh=5)the
10、n qh<="0000"; else qh<=qh+1; end if; else ql<=ql+1; end if; end if ; end if; end process; end behave; C. 24进制时模块VHDL语言: library ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ENTITY hour24 IS PORT ( ci :IN std_logic;
11、 hclear :IN std_logic; clk :IN std_logic; co :out std_logic; qh :buffer std_logic_vector(3 downto 0); ql :buffer std_logic_vector(3 downto 0) ); END hour24; ARCHITECTURE behave OF hour24 IS BEGIN co<='1'when (qh="0
12、010" and ql="0011" and ci='1') else '0'; PROCESS (clk,hclear) BEGIN IF(hclear='1')THEN qh<="0000"; ql<="0000"; ELSIF(clk'EVENT AND clk='1')THEN if(ci='1')then if(ql=9) or(ql=3 and qh=2) then ql<="0000";
13、 if(qh=2) then qh<="0000"; else qh<=qh+1; end if; else ql<=ql+1; end if; END IF; END IF; END PROCESS; END behave; D、二选一数据选择器: library ieee; use ieee.std_logic_1164.all; entity xuanze is port(cp1,
14、cp2,en:in std_logic; chu:out std_logic ); end xuanze; architecture behave of xuanze is begin process(cp1,cp2,en) begin if(en='1') then chu<=cp1; else chu<=cp2; end if; end process; end behave; 仿真图像: 调试过程图像: (1) 秒钟计数器的调试过程: (2) 分钟计数器的调试过程: (3) 时钟计数器的调试过程: (4) 2选1
15、数据选择器的调试过程: (5) 总体波形: 设计心得体会: 通过本次设计使我更热爱数字电路设计,初步学会MAXPLUSⅡ软件VHDL语言的编用,能设计较简单的时序逻辑电路和组合逻辑电路,能解决实验设计中出现的一般性问题,提高了自己的解决问题的能力。在实习过程中大大激发了我们对EDA的浓厚兴趣。井老师的指导使我们受益匪浅。我们在学习过程中得到实践锻炼,获得新的知识与技能。在这短暂的几天里,我们积极地投入,认真地学习新技术、新方法。同学之间互帮互助,一起研究探讨,共同提高,增进了友谊,也加深了感情。 参考文献: 1.VHDL简明教程 东南大学 2.数字电子技术 高等教育出版社 3.VHDL电路设计技术 国防工业出版社 4.电工学(第六版 下册 电子技术) 高等教育出版社






