《[EDA]电子时钟设计及报告》由会员分享,可在线阅读,更多相关《[EDA]电子时钟设计及报告(7页珍藏版)》请在金锄头文库上搜索。
1、.基于VHDL的多功能数字钟设计报告题目:多功能数字钟姓名:程胜归学号:0304811指导老师:廖宇设计时间:2007-7-8一、 VHDL的发展硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言。利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路ASIC或现场可编程门阵列FPGA自动布局布线工具,把网表转换为要实现的具体电路布线结构。目前,这种高层
2、次(high-level-design)的方法已被广泛采用。据统计,目前在美国硅谷约有90%以上的ASIC和FPGA采用硬件描述语言进行设计。早在1980年,因为美国军事工业需要描述电子系统的方法,美国国防部开始进行VHDL的开发。1987年,由IEEE(Institute of Electrical and Electro- nics Engineers)将VHDL制定为标准。参考手册为IEEE VHDL语言参考手册标准草案1076/B版,于1987年批准,称为IEEE 1076-1987。应当注意,起初VHDL只是作为系统规范的一个标准,而不是为设计而制定的。第二个版本是在1993年制定的
3、,称为VHDL-93,增加了一些新的命令和属性。虽然有“VHDL是一个4亿美元的错误”这样的说法,但VHDL毕竟是1995年以前唯一制订为标准的硬件描述语言,这是它不争的事实和优势;但同时它确实比较麻烦,而且其综合库至今也没有标准化,不具有晶体管开关级的描述能力和模拟设计的描述能力。目前的看法是,对于特大型的系统级数字电路设计,VHDL是较为合适的。实质上,在底层的VHDL设计环境是由Verilog HDL描述的器件库支持的,因此,它们之间的互操作性十分重要。目前,Verilog和VDHL的两个国际组织OVI、VI正在筹划这一工作,准备成立专门的工作组来协调VHDL和Verilog HDL语言
4、的互操作性。OVI也支持不需要翻译,由VHDL到Verilog的自由表达。二、设计要求基本要求:1、24小时计数显示;2、具有校时功能(时,分) ;附加要求:1、秒表功能(复位,计时);三、实验程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLOCK IS PORT ( CLK1:IN STD_LOGIC; CLK2:IN STD_LOGIC; R1:IN STD_LOGIC; R2:IN STD_LOGIC; scond:IN STD_LOGIC; HOUR:IN STD_L
5、OGIC; MINI:IN STD_LOGIC; RESET:IN STD_LOGIC; DOUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); CHOICE:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END CLOCK;ARCHITECTURE behav OF CLOCK IS SIGNAL LED7:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL SLIP:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL a,b,c,d,e,f,g,h:STD_LOGIC_VECTOR(3 DOWNTO 0)
6、;BEGIN- PROCESS (CLK2) BEGIN IF CLK2EVENT AND CLK2=1 THEN IF SLIP111 THEN SLIP=SLIP+1; ELSE SLIP CHOICE=00000001;LED7 CHOICE=00000010;LED7 CHOICE=00000100;LED7 CHOICE=00001000;LED7 CHOICE=00010000;LED7 CHOICE=00100000;LED7 CHOICE=01000000;LED7 CHOICE=10000000;LED7CHOICE=00000001;LED7=a; END CASE; EN
7、D IF; END PROCESS; PROCESS (CLK1) BEGIN IF CLK1EVENT AND CLK1=1 THEN IF a1001THEN a=a+1; ELSE b=b+1;a=0000; END IF; -0-a IF( a=1001and b=0101)then d=d+1;b=0000;a=0000; end if; IF c=1100THEN c=1101;f=1101; ELSE c=1100; f=1100; END IF; -2-c-f- IF d=1010THEN e=e+1;d=0000; END IF; -3-d IF( d=1001and e=0
8、101)then g=g+1;e=0000;d=0000;end if; IF g=1010THEN h=h+1;g=0000; END IF; -6-g IF (h=0010 and g=0011)THEN a=a+1;h=0000; END IF; -7-h-部分时间可调开始- IF RESET=1 THEN a=0000; b=0000; c=0000; d=0000; e=0000; f=0000; g=0000; h=0000; END IF; -复位键IF scond=1 THEN a=0000;b=0000; END IF;-精确调整秒清零 IF MINI=1THEN d=d+1
9、;END IF;-分钟调整IF (d=1001 and e=0101)thend=0000;e=0000;g=g;END IF;-59分时小时不加1IF d=1010THEN e=e+1;d=0000; END IF;-分钟不延时 IF HOUR=1THEN g1000THEN g=0000;h=h+1;END IF;-小时不延时 IF (g=0011 and h=0010)then g=0000;h=0000;END IF;-小时调整不延迟-部分时间可调结束-部分秒表计时开始- IF R1=1 THEN a=0000; b=0000; c=1100; d=0000; e=0000; f=11
10、00; g=0000; h=0000; END IF;-秒表复位IF R2=1 THEN a=a;else a DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT=0000000; END CASE; END PROCESS;END behav;四、 实验仿真效果图实验程序通过编译,无错误,设置CLK和CLK1的宽度为1输入信号进行仿真,得到仿真效果如下图:五、实验结果:1. 实现了基本要求:24小时计时;分钟小时可调;2. 并在基本要求的基础上增加了复位,以及精确调整时的秒清零功能;3. 解决了调节时候的分钟和小时进位时候的延迟现象;4. 分钟调整时,当调整至59时,此时的小时不增加,合理化设计;5. 简单秒表功能:R1复位开始秒表,R2计时;以上实验结果现象在实验箱上正常演示,通过老师检查!六.设计体会数字钟的原有程序是老师编写的,我只是在原有的基础上加上了一些程序段实现了时钟的可调和简单的秒表功能,调整的过程当中也发现不少问题,比如: