基于VHDL的数字电子钟系统设计(3)

2019-02-15 17:33

八、设计结果

由上面的仿真波形图可知,本次实验基本上完成了实验设计任务的要求数字电

子钟的基本功能:年、月、日、时以24小时制显示,月日为阳历显示,起始时间为:2012年11月26日14:00;支持闹铃功能;闰年提醒;中国传统节假日提醒。本次实验的数字电子钟的初值为2012年11月26日14时,闹钟的设定时间是2013年1月1日1时,犹如上图的波形所表现出来的一样。

九、论文结论

在本次的设计实验过程中出现很多的问题如编程时,经常导致语法错误,如:“;”没有写上,变量类型没有预先标明,前后变量名字由于缺少一个或多一个字母而导致出错。所以在写程序的时候应该对照错误,认真检查程序,看哪个地方的标点,变量没有写上或标明。再者在进行编译或波形仿真时,经常得到的不是预想中的结果。而且往往得不出错误在哪里,

编译的过程并没有错误但是结果却是错的,于是将就将需要编译或进行仿真的实体文件置顶,经检错无误后,进行波形仿真,在仿真之前合理设置仿真结束时间和信号周期,就可以了。在控制时间的显示的时候,由于变量太多多发现不能完全的控制住变量,导

致仿真波形的是时候出现了高阻的状态,所以在顶层文件下应该减少变量,仔细推敲,合理命名。

虽然只是一个小设计,我却也从中学到了不少设计流程和一些相关问题。设计是一个十分严谨的过程,容不得随意和马虎。要想快速而高效地完成一项设计,必须先有一个清晰明了的设计思路,设想好一个整体框架,然后在此基础上,逐渐将各个部分功能进行完善。 在设计的过程中,也曾遇到不少困难,但正所谓坚持就是胜利,要想取得成功,必须要有努力付出,这样所取得的结果才更有意义。

附件(代码清单)

10分频模块

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fenpin10 is

port (clk:in std_logic;--- - 输入时钟信号 clk_out:buffer std_logic);--- -输出时钟信号 end fenpin10;

architecture rtl of fenpin10 is

signal cnt:std_logic_vector(3 downto 0);--- -定义计数器模值 begin

process (clk) begin

if (clk'event and clk='1') then if (cnt=\clk_out<=not clk_out; cnt<=\else

cnt<=cnt+'1'; end if; end if;

end process ; end rtl;

分频器模块

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fenpin is

port (clk:in std_logic;--- -??1Khz????

clk_1hz,clk_100hz:buffer std_logic);--- - ???1hz?100hz??

end fenpin;

architecture rtl of fenpin is signal clk_10hz:std_logic;

component fenpin10 is--??10???????????? port (clk_in:in std_logic;

clk_out:buffer std_logic); end component; begin

u0: fenpin10

port map(clk_in=>clk,--- - ????

clk_out=>clk_100hz);--- - ???? u1: fenpin10

port map (clk_in=>clk_100hz, --- - ???? clk_out=>clk_10hz);-- - - ???? u2: fenpin10

port map (clk_in=>clk_10hz, --- - ???? clk_out=>clk_1hz);-- - - ???? end rtl;

分频器模块testbench文件

LIBRARY ieee ;

USE ieee.std_logic_1164.all ;

ENTITY testbench IS END testbench;

ARCHITECTURE a OF testbench IS signal clk_1hz: std_logic; signal clk_100hz: std_logic;

SIGNAL clk : std_logic := '1' ; COMPONENT fenpin port (clk:in std_logic;

clk_1hz,clk_100hz:buffer std_logic);

END COMPONENT ; BEGIN process begin

wait for 50ns; clk <= not clk; end process; test:fenpin PORT MAP ( clk => clk,

clk_1hz=>clk_1hz, clk_100hz=>clk_100hz ) ; END a;

时模块

library ieee;

use ieee.std_logic_1164.all; entity shi is

port(clk :in std_logic; preset : in std_logic; jiaoshi: in std_logic;

h_in:in integer range 0 to 23; hour : out integer range 0 to 23; co : out std_logic); end shi;

architecture a of shi is

signal s :integer range 0 to 23:=14; begin

process(clk,preset) begin

if preset ='0' then s<=14; elsif (clk'event and clk='1') then if s<23 then s<=s+1; else s<=0; end if;

if s=23 then co<='1'; else co<='0';

if jiaoshi='1' then s<=h_in;

elsif (clk'event and clk='1') then if s<23 then s<=s+1; else s<=0; end if;

if s=23 then co<='1'; else co<='0'; end if; end if ; end if; end if;

end process; hour <=s; end a;

时模块Testbench文件

LIBRARY ieee ;

USE ieee.std_logic_1164.all ;

ENTITY testbench IS END testbench;

ARCHITECTURE a OF testbench IS SIGNAL hour : integer :=14 ; signal jiaoshi : std_logic:='0'; signal h_in: integer:=14; signal co : std_logic:='0';

SIGNAL preset : std_logic := '0' ; SIGNAL clk : std_logic := '1' ; COMPONENT shi port(clk :in std_logic;

preset : in std_logic; jiaoshi: in std_logic;

h_in:in integer range 0 to 23; hour : out integer range 0 to 23; co : out std_logic); END COMPONENT ; BEGIN process begin

wait for 50ns; clk <= not clk; end process; process begin

wait for 2000ns; jiaoshi<=not jiaoshi; end process;

preset <= '1' after 20ns; test:shi

PORT MAP ( jiaoshi =>jiaoshi, h_in=>h_in, clk => clk,

preset => preset, co => co, hour => hour) ; END a;


基于VHDL的数字电子钟系统设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高一上学期期末测试题2

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: