课程设计报告数字秒表的设计
更新时间:2024-03-11 06:14:01 阅读量: 综合文库 文档下载
目录
1 引言 ........................................................................................................................................ 1
1.1 课程设计的目的 .......................................................................................................... 1 1.2 课程设计的内容 .......................................................................................................... 1 2 EDA、VHDL简介 .............................................................................................................. 1
2.1 EDA技术 ...................................................................................................................... 1 2.2 硬件描述语言——VHDL ........................................................................................... 2 3设计过程 ................................................................................................................................. 4
3.1 设计规划 ...................................................................................................................... 4 3.2
各模块的原理及其程序 ........................................................................................... 4 3.2.1控制模块 ............................................................................................................. 5 3.2.2时基分频模块 ..................................................................................................... 5 3.2.3计时模块 ............................................................................................................. 6 3.2.4显示模块 ............................................................................................................. 7
4系统仿真 ................................................................................................................................. 9 结束语 ...................................................................................................................................... 13 致谢 .......................................................................................................................................... 14 参考文献 .................................................................................................................................. 15 附录 .......................................................................................................................................... 16
*** 数字秒表的设计 1 / 23
1 引言
在科技高度发展的今天,集成电路和计算机应用得到了高速发展。尤其是计算机应用的发展。它在人们日常生活已逐渐崭露头角。大多数电子产品多是由计算机电路组成, 如:手机、mp3等。而且将来的不久他们的身影将会更频繁的出现在我们身边。各种家用电器多会实现微电脑技术。电脑各部分在工作时多是一时间为基准的。本文就是基于计算机电路的时钟脉冲信号、状态控制等原理设计出的数字秒表。秒表在很多领域充当一个重要的角色。在各种比赛中对秒表的精确度要求很高,尤其是一些科学实验。他们对时间精确度达到了几纳秒级别。
1.1 课程设计的目的
本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,对计算机系统中时钟控制系统进一步了解,掌握状态机工作原理,同时了解计算机时钟脉冲是怎么产生和工作的。在掌握所学的计算机组成与结构课程理论知识时。通过对数字秒表的设计,进行理论与实际的结合,提高与计算机有关设计能力,提高分析、解决计算机技术实际问题的能力。通过课程设计深入理解计算机结构与控制实现的技术,达到课程设计的目标。
1.2 课程设计的内容
利用VHDL语言设计基于计算机电路中时钟脉冲原理的数字秒表。该数字秒表能对 0秒~59分59.99秒范围进行计时,显示最长时间是59分59秒。计时精度达到10ms。设计了复位开关和启停开关。复位开关可以在任何情况下使用,使用以后计时器清零,并做好下一次计时的准备。
2 EDA、VHDL简介
2.1 EDA技术
EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术的最新成果而开发出的电子CAD通用软件包,它根据硬件描述语言HDL完成的设计文件,自动完成逻辑编译、化简、分割、综合、优化、布局布线及仿真,直至完成对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。目前EDA主要辅助进行三个方面的设
*** 数字秒表的设计 2 / 23
计工作:IC设计、电子电路设计和PCB设计。没有EDA技术的支持,想要完成超大规模集成电路的设计制造是不可想象的;反过来,生产制造技术的不断进步又必将对EDA技术提出新的要求。
2.2 硬件描述语言——VHDL
★ VHDL的简介
VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为A I/IEEE的标准(IEEE STD 1076-1987)。1993年更进一步修订,变得更加完备,成为A I/IEEE的A I/IEEE STD 1076-1993标准。目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。 ★ VHDL语言的特点
VHDL的程序结构特点是将一项工程设计,关于用VHDL和原理图输入进行CPLD/FPGA设计的粗略比较:在设计中,如果采用原理图输入的设计方式是比较直观的。你要设计的是什么,你就直接从库中调出来用就行了。这样比较符合人们的习惯。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的。
(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为
系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统
的功能可行性,随时可对设计进行仿真模拟。
*** 数字秒表的设计 3 / 23
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有
设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并
自动的把VHDL描述设计转变成门级网表。
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最
终设计实现的目标器件是什么,而进行独立的设计。 ★ VHDL的设计流程 它主要包括以下几个步骤:
1.文本编辑:
用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。通常VHDL文件保存为.vhd文件,Verilog文件保存为.v文件
2.功能仿真:
将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)
3.逻辑综合:
将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。逻辑综合软件会生成.edf或.edif 的EDA工业标准文件。
4.布局布线:
将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放PLD/FPGA内。
5.时序仿真:
需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。(也叫后仿真) 通常以上过程可以都在PLD/FPGA厂家提供的开发工具。
6.器件编程
*** 数字秒表的设计 4 / 23
3设计过程
3.1 设计规划
本系统设计采用自顶向下的设计方案,系统的整体组装设计原理图如图3-1所示,
它主要由控制模块、时基分频模块,计时模块和显示模块四部分组成。各模块分别完成计时过程的控制功能、计时功能与显示功能。
一百进制计数器 图 3-1 系统组成框图
六十进制计数器 计时控制电路 计时电路 显示电路 数字秒表 控制状态机 时基分频电路 计数器 扫描电路 七段译码器 3.2 各模块的原理及其程序
CLK CLR CB10 CLK CO OUTPUT CO SP
CLR CLK EN SP OUTPUT CTRL EN CLK CLR EN S_1MS[3..0] S_10MS[3..0] OUTBCD[3..0] S_100MS[3..0] S_1S[3..0] SEG[]7..0] S_10S[3..0] M_1MIN[3..0] M_10MIN[3..0] HOUR[3..0] MULX BCD7 BCD[3..0] LED[6..0] OUTPUT S_1MS[3..0] S_10MS[3..0] CLK S_100MS[3..0] S_1S[3..0] CLR EN S_10S[3..0] M_1MIN[3..0] M_10MIN[3..0] HOUR[3..0] EN LED[6..0] OUTPUT SEG[7..0] OUTPUT OUTBCD[3..0] COUNT 图3-2系统的整体组装设计原理图
*** 数字秒表的设计 5 / 23
本系统设计由控制模块、时基分频模块,计时模块和显示模块四部分组成。各模块实现秒表不同的功能 。图3-2就是整个系统原理图。
3.2.1控制模块
计时模块的作用是针对计时过程进行控制。计时控制模块可用俩个按钮来完成秒表的启动、停止和复位。部分源程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CTRL IS
PORT( CLR,CLK,SP:IN STD_LOGIC; EN :OUT STD_LOGIC); ???????? ?????????
COM:PROCESS(SP,CURRENT_STATE) BEGIN END IF; END PROCESS;
END BEHAVE;
3.2.2时基分频模块
时基分频模块的作用把输入时钟信号变为分频输出信号。源程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CB10 IS
PORT( CLK: IN STD_LOGIC; CO : OUT STD_LOGIC); END CB10;
ARCHITECTURE ART OF CB10 IS
SIGNAL COUNT:STD_LOGIC_VECTOR (3 DOWNTO 0); BEGIN
*** 数字秒表的设计 6 / 23 PROCESS(CLK) BEGIN
IF RISING_EDGE(CLK)THEN IF COUNT=\ COUNT<=\ CO<='1'; ELSE
COUNT<=COUNT+1; CO<='0'; END IF; END IF; END PROCESS; END ART;
3.2.3计时模块
计时模块执行计时功能,计时方法和计算机一样是对标准时钟脉冲计数。他是由四 个十进制计数器和俩个六进制计数器构成,其中毫秒位、十毫秒位、秒位和分位采用十进制计数器,十秒位和十分位采用六进制计数器。源程序: ①.十进制计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CDU10 IS
PORT( CLK:IN STD_LOGIC; CLR,EN:IN STD_LOGIC; CN :OUT STD_LOGIC;
COUNT10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END CDU10;
…………………………………… …………………………………… END IF;
*** 数字秒表的设计 7 / 23 END IF; END PROCESS; END ART;
②六进制计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CDU6 IS
………………………………… ………………………………… END IF; END IF; END PROCESS; END ART;
③计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COUNT IS
……………………………… ……………………………… END ART;
3.2.4显示模块
计时显示电路的作用是将计时值在LED数码管上显示出来。计时电路产生的值经过BCD七段译码后,驱动LED数码管。计时显示电路的实现方案采用扫描显示。部分源程序: ①数据选择器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
*** 数字秒表的设计 8 / 23 USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY MULX IS
PORT( CLK,CLR,EN:IN STD_LOGIC;
S_1MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_10MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_100MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_1S:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_10S:IN STD_LOGIC_VECTOR(3 DOWNTO 0); M_1MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); M_10MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); HOUR:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
OUTBCD:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END MULX;
ARCHITECTURE ART OF MULX IS
SIGNAL COUNT:STD_LOGIC_VECTOR(3 DOWNTO 0); ……………………………… ……………………………… END CASE; END IF;
END PROCESS; END ART;
②BCD七段译码器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY BCD7 IS PORT(
BCD:IN STD_LOGIC_VECTOR(3 DOWNTO 0); LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END BCD7;
ARCHITECTURE ART OF BCD7 IS BEGIN
LED<=\\\\\\\\\\
*** 数字秒表的设计 9 / 23 \END ART;
4 系统仿真
(1) 时基分频模块的仿真(如图 4-1所示)
图4-1时基分频模块的仿真
分析:CLK为时钟信号的输入 ,CO为分频输出信号。
(2) 控制模块的仿真(如图 4-2所示)
图4-2控制模块的仿真
分析:CLK、CLR和SP为输入信号,EN为输出信号。
(3) 计时电路模块的仿真(如图 4-3~图4-5所示)
①?? 十进制计数器的仿真(如图4-3所示) ②?? 六进制计数器的仿真(如图4-4所示) ③?? 计数器的仿真(如图4-5所示)
*** 数字秒表的设计 10 / 23
图4-3十进制计数器的仿真
图4-4 六进制计数器的仿真图
图4-5计数器的仿真图
分析:clk为时钟脉冲脉冲,s_1ms是毫秒计数值,s_10ms是十毫秒计数器,s_100ms是百毫秒计数器,s_1s是秒计数器,s_10s是十秒计数器,m_1min是分计数器,s_10min是十分计数器,hour是小时计数器。它们均为输入信号。每来两个时钟脉冲,s_1ms加
*** 数字秒表的设计 11 / 23
1,当s_1ms满十时,s_10ms加1,依次类推,s_10ms满十的时候,s_100ms加1等等作为输出。
(4) 显示电路模块的仿真(如图 4-6~图4-7所示) ① 数据选择器的仿真(如图 4-6所示)
② BCD七段译码器驱动器的仿真(如图 4-7所示)
图4-6 数据选择器的仿真图
图4-7 BCD七段译码器的仿真图
分析:bcd为时钟脉冲输入信号,led是输出信号,如图所示:当输出为“1111110”时候,输入为“0000”;当输出为“0110000”时输入“0001”,当输入为“0010”时输出为“1101101”,当输入为“0011”时输出为“1111001”等等来实现七段译码功能。
(5) 数字秒表整个系统的仿真(如图4-8所示)
*** 数字秒表的设计 12 / 23
图4-8数字秒表起始工作的仿真图状态仿真图
分析:秒表开始从零开始计数,每次增加10ms。工作很正常的进行。
*** 数字秒表的设计 13 / 23
结束语
开始做设计时总是会犯一些错误,只有经过不停的改错不停的编译得到正确的程序说明了作为软件编程人员是不能粗心大意的,一个程序的质量的高低与你细心与否有着一定的联系。在编程时,我充分使用了结构化的思想,这样程序检查起来也比较方便,调试时也给了我很大方便,只要一个模块一个模块的进行调就可以了,充分体现了结构化编程的优势。在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。
在应用VHDL的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法在数字系统设计中发挥越来越重要的作用。
*** 数字秒表的设计 14 / 23
致谢
经过快两个星期的紧张工作,我终于完成了我的设计任务——设计数字秒表。
在这次课程设计中特别感谢肖晓丽老师对我的指导,正是由于她的督促和耐心指导,我才可以顺利完成这次的设计。锻炼了动手能力,给以后的学习指出了一个方向。
*** 数字秒表的设计 15 / 23
参考文献
[1] 谢华生.VHDL数字控制系统设计范例.北京:电子工业出版社,2006 [2] 万高明.EDA技术实验与课程设计.长沙:湖南大学出版社,2004 [3] 黄仁欣.EDA技术实用教程.北京:清华大学出版社,2006
*** 数字秒表的设计 16 / 23
附录
1. 时基分频模块的源程序(CB10.VHD)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CB10 IS
PORT( CLK: IN STD_LOGIC; CO : OUT STD_LOGIC); END CB10;
ARCHITECTURE ART OF CB10 IS
SIGNAL COUNT:STD_LOGIC_VECTOR (3 DOWNTO 0); BEGIN
PROCESS(CLK) BEGIN
IF RISING_EDGE(CLK)THEN IF COUNT=\ COUNT<=\ CO<='1'; ELSE
COUNT<=COUNT+1; CO<='0'; END IF; END IF; END PROCESS; END ART;
2. 控制模块的源程序(CTRL.VHD)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CTRL IS
PORT( CLR,CLK,SP:IN STD_LOGIC; EN :OUT STD_LOGIC); END ;
ARCHITECTURE BEHAVE OF CTRL IS
CONSTANT S0: STD_LOGIC_VECTOR (1 DOWNTO 0):=\CONSTANT S1: STD_LOGIC_VECTOR (1 DOWNTO 0):=\CONSTANT S2: STD_LOGIC_VECTOR (1 DOWNTO 0):=\CONSTANT S3: STD_LOGIC_VECTOR (1 DOWNTO 0):=\TYPE STATES IS (S0,S1,S2,S3);
SIGNAL CURRENT_STATE,NEXT_STATE:STATES; BEGIN
COM:PROCESS(SP,CURRENT_STATE) BEGIN
CASE CURRENT_STATE IS
*** 数字秒表的设计 17 / 23 WHEN S0=>EN<='0'; IF SP='1'THEN
NEXT_STATE<=S1; ELSE
NEXT_STATE<=S0; END IF;
WHEN S1=>EN<='1'; IF SP='1'THEN
NEXT_STATE<=S1; ELSE
NEXT_STATE<=S2; END IF;
WHEN S2=>EN<='1'; IF SP='1'THEN
NEXT_STATE<=S3; ELSE
NEXT_STATE<=S2; END IF;
WHEN S3=>EN<='0'; IF SP='1'THEN
NEXT_STATE<=S3; ELSE
NEXT_STATE<=S0; END IF; END CASE; END PROCESS;
SYNCH:PROCESS(clk) BEGIN
IF CLR='1'THEN
CURRENT_STATE <=S0;
ELSIF CLK'EVENT AND CLK='1'THEN CURRENT_STATE<=NEXT_STATE; END IF;
END PROCESS; END BEHAVE;
3. 计时模块的源程序
(1) 十进制计数器的源程序(CDU10.VHD)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CDU10 IS
PORT( CLK:IN STD_LOGIC; CLR,EN:IN STD_LOGIC; CN :OUT STD_LOGIC;
COUNT10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
*** 数字秒表的设计 18 / 23 END CDU10;
ARCHITECTURE ART OF CDU10 IS
SIGNAL SCOUNT10: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN COUNT10<=SCOUNT10; PROCESS (CLK,CLR,EN) BEGIN IF(CLR='1')THEN SCOUNT10<=\ELSIF RISING_EDGE(CLK)THEN IF(EN='1')THEN
IF SCOUNT10=\CN<='1';
SCOUNT10<=\ELSE CN<='0';
SCOUNT10<=SCOUNT10+'1'; END IF; END IF; END IF;
END PROCESS; END ART;
(2) 六进制计数器的源程序(CDU6.VDH)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CDU6 IS
PORT( CLK,CLR,EN:IN STD_LOGIC;
CN :OUT STD_LOGIC;
COUNT6:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END CDU6;
ARCHITECTURE ART OF CDU6 IS
SIGNAL SCOUNT6: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN
COUNT6<=SCOUNT6; PROCESS (CLK,CLR,EN) BEGIN
IF(CLR='1')THEN
SCOUNT6<=\
ELSIF RISING_EDGE(CLK) THEN IF(EN='1')THEN
IF SCOUNT6=\CN<='1';
SCOUNT6<=\ELSE CN<='0';
*** 数字秒表的设计 19 / 23 SCOUNT6<=SCOUNT6+'1'; END IF; END IF; END IF;
END PROCESS; END ART;
(3) 计数器的源程序(COUNT.VHD)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COUNT IS
PORT( CLK,CLR,EN:IN STD_LOGIC;
S_1MS:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_10MS:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_100MS:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_1S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_10S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_1MIN:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_10MIN:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); HOUR:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COUNT;
ARCHITECTURE ART OF COUNT IS COMPONENT CDU10
PORT( CLK,CLR,EN:IN STD_LOGIC; CN :OUT STD_LOGIC;
COUNT10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COMPONENT CDU10; COMPONENT CDU6
PORT( CLK,CLR,EN:IN STD_LOGIC; CN :OUT STD_LOGIC;
COUNT6:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COMPONENT CDU6;
SIGNAL A,B,C,D,E,F,G,H:STD_LOGIC; BEGIN
UL:CDU10 PORT MAP (CLK,CLR,EN,A,S_1MS); U2:CDU10 PORT MAP (A,CLR,EN,B,S_10MS); U3:CDU10 PORT MAP (B,CLR,EN,C,S_100MS); U4:CDU10 PORT MAP (C,CLR,EN,D,S_1S); U5:CDU6 PORT MAP (D,CLR,EN,E,S_10S); U6:CDU10 PORT MAP (E,CLR,EN,F,S_1MIN); U7:CDU6 PORT MAP (F,CLR,EN,G,S_10MIN); U8:CDU10 PORT MAP (G,CLR,EN,H,HOUR); END ART;
*** 数字秒表的设计 20 / 23
4. 显示模块的源程序
(1) 数据选择器的源程序(MULX.VDH)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY MULX IS
PORT( CLK,CLR,EN:IN STD_LOGIC;
S_1MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_10MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_100MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_1S:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_10S:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_1MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_10MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); HOUR:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
OUTBCD:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END MULX;
ARCHITECTURE ART OF MULX IS
SIGNAL COUNT :STD_LOGIN_VECTOR(3 DOWNTO 0); BEGIN
PROCESS (CLK) BEGIN
IF CLR='1'THEN COUNT<=\
ELSIF RISING_EDGE(CLK)THEN IF EN ='1' THEN COUNT<=\ELSE
COUNT<=COUNT+'1'; END IF; END IF; END IF;
END PROCESS; PROCESS(CLK) BEGIN
IF CLK'EVENT AND CLK='1' THEN CASE COUNT IS
WHEN \ SEG<=\WHEN \ SEG<=\WHEN \ SEG<=\WHEN \ SEG<=\WHEN \ SEG<=\
*** 数字秒表的设计 21 / 23 WHEN \ SEG<=\WHEN \ SEG<=\WHEN \ SEG<=\WHEN \ SEG<=\WHEN \ SEG<=\WHEN OTHERS=>OUTBCD<=\ SEG<=\END CASE; END IF;
END PROCESS; END ART;
(2) BCD七段译码器驱动器的源程序(BCD7.VDH)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY BCD7 IS PORT(
BCD:IN STD_LOGIC_VECTOR(3 DOWNTO 0); LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END BCD7;
ARCHITECTURE ART OF BCD7 IS BEGIN
LED<=\\\\\\\\\\\END ART;
5. 顶层设计的源程序(MB.VHD)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY MB IS
PORT( SP,CLR,CLK:IN STD_LOGIC; CO,EN: OUT STD_LOGIC;
LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
OUTBCD:OUT STD_LOGIC_VECTOR(3 DOWNTO 0))
*** 数字秒表的设计 22 / 23 SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END MB;
ARCHITECTURE ART OF MB IS COMPONENT CTRL
PORT( CLK,CLR,SP:IN STD_LOGIC; EN :OUT STD_LOGIC); END COMPONENT ; COMPONENT CB10
PORT( CLK:IN STD_LOGIC; CO :OUT STD_LOGIC); END COMPONENT ; COMPONENT COUNT
PORT( CLK,CLR,EN:IN STD_LOGIC;
S_1MS: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_10MS: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_100MS: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_1S: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_10S: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_1MIN: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_10MIN: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); HOUR: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COMPONENT; COMPONENT BCD7
PORT( BCD:IN STD_LOGIC_VECTOR(3 DOWNTO 0); LED :OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END COMPONENT ; COMPONENT MULX
PORT( CLK,CLR,EN:IN STD_LOGIC;
S_1MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_10MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_100MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_1S:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_10S:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_1MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_10MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); HOUR:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
OUTBCD:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END COMPONENT;
SIGNAL C,E:STD_LOGIC;
SIGNAL MS1_S,MS10_S,MS100_S:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL S1S_S,S10_S:STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL MIN1_S,MIN10_S:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL H:STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL BCD_S,MS10_S,MS100_S:STD_LOGIC_VECTOR(3 DOWNTO 0);
*** 数字秒表的设计 23 / 23 BEGIN
U0: CTRL PORT MAP(CLR,CLK,SP,E); U1: CB10 PORT MAP(CLK,C);
U2: COUNT PORT MAP(C,CLR,E,MS1_S,MS10_S,MS100_S,S1S_S,S10_S,MIN1_SMIN10_S,H);
U3:MULXPORTMAP(CLR,CLK,E,MS1_S,MS10_S,MS100_S,S1S_S,S10_S,MIN1_SMIN10_S,H,BCD_S,SEG);
U4: BCD7 PORT MAP(BCD_S,LED); CO<=C; EN<=E;
OUTBCD<=BCD_S; END ART;
正在阅读:
课程设计报告数字秒表的设计03-11
中职英语(语文出版社)基础模块上册 Unit2 Family 教案08-07
武大 无线 覆盖 - 图文03-08
平时作业四2012秋04-18
软件技术基础2实验任务106-09
Existence and uniqueness of solutions on bounded domains to a FitzHugh-Nagumo type elliptic05-31
Transmission+Flexget实现RSS自动下载04-05
小学健康教育工作总结04-24
大体积筏板砼施工方案04-23
2004年广东、广西高考地理试题05-13
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 设计
- 秒表
- 课程
- 数字
- 报告
- 8D报告过程以及8D是指的什么讲解
- 北师大版八年级数学上册第二章实数《平方根》课堂练习2-精品
- PCT申请费用缴费方式和减免标准是什么
- 汽车科技的研发项目可行性研究报告评审方案设计(2013年发改委标
- 化工安全与环保练习题
- 信用社(银行)营业部创建“杰出青年文明号”事迹报告
- 国家开放大学 金融学第一章 自测题
- 习题及参考答案(统计学)
- 晋城市奇强洗涤产品的流通型终端现状分析及运作策略
- 渤海大学学生自主实习考核管理协议
- 年产15万吨润滑油项目项目可行性研究报告修改稿收集资料
- 21世纪的有机合成
- 著名品牌(2)
- 2013版用于立项废旧轮胎资源化利用项目可行性研究报告(甲级资质
- 数学f1初中数学关于圆的试题(17-24)
- 福州市小学语文总复习 - 句子专项训练题--参考答案
- 电力系统分析电力系统三相短路计算
- 人教版初中数学七年级下册第六章《实数》单元检测试题
- 《物种起源》导言教案(篇二)
- Clannad音乐