资源描述
数字系统综合设计
实验报告
实验题目: 模拟中央人民广播电台报时电路
姓名: 张晓奇 马良
学号: 20072306 20072312
设计内容:
1、实验要求:
1.1 计时器运行到59分49秒开始报时,每鸣叫1s就停叫1s,共鸣叫6响;前5响为低音,频率为750HZ,最后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端分别是报时信号频率输入端。
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 :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';
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,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 process;
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 :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';
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)then
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;
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="0010" 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";
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,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数据选择器的调试过程:
(5) 总体波形:
设计心得体会:
通过本次设计使我更热爱数字电路设计,初步学会MAXPLUSⅡ软件VHDL语言的编用,能设计较简单的时序逻辑电路和组合逻辑电路,能解决实验设计中出现的一般性问题,提高了自己的解决问题的能力。在实习过程中大大激发了我们对EDA的浓厚兴趣。井老师的指导使我们受益匪浅。我们在学习过程中得到实践锻炼,获得新的知识与技能。在这短暂的几天里,我们积极地投入,认真地学习新技术、新方法。同学之间互帮互助,一起研究探讨,共同提高,增进了友谊,也加深了感情。
参考文献:
1.VHDL简明教程 东南大学
2.数字电子技术 高等教育出版社
3.VHDL电路设计技术 国防工业出版社
4.电工学(第六版 下册 电子技术) 高等教育出版社
展开阅读全文