VHDL程序设计数字电子表2收集资料
VHDL入门教程
VHDL入门教程VHDL(Very High-speed Integrated Circuit HardwareDescription Language)是一种用于设计数字电路的硬件描述语言。
它是IEEE 1076标准中规定的一种语言,广泛应用于数字电路的设计、仿真和综合等领域。
本文将为大家介绍VHDL的基础知识和入门教程。
一、VHDL的基本概念1. 实体(Entity):VHDL代码的最高层次,用于定义模块的输入、输出和内部信号。
2. 架构(Architecture):定义了实体中的各个信号和组合逻辑的行为。
3. 信号(Signal):表示数据在电路中的传输和操作。
4. 进程(Process):定义了组合逻辑的行为,用于描述信号之间的关系。
5. 实体声明(Entity Declaration):用于描述模块的名称、输入、输出和内部信号。
6. 架构声明(Architecture Declaration):用于描述模块的内部逻辑。
二、VHDL的基本语法1.实体声明语法:```entity entity_name isport ( port_list );end entity_name;```其中,entity_name是实体的名称,port_list是实体的输入、输出和内部信号。
2.架构声明语法:```architecture architecture_name of entity_name issignal signal_list;beginprocess (sensitivity_list)begin--逻辑行为描述end process;end architecture_name;```其中,architecture_name是架构的名称,entity_name是实体的名称,signal_list是架构的内部信号,sensitivity_list是触发事件的信号列表。
三、VHDL的基本例子下面以一个简单的4位加法器为例介绍VHDL的编写和仿真流程。
用VHDL语言实现数字电子钟的设计(EDA课程设计报告-含源程序)
课程设计报告设计题目:用VHDL语言实现数字钟的设计班级:电子 0901学号: XXXXXXXX姓名:XXXXXXXXX指导教师:XXXXXXXXX设计时间:现代电子设计技术的核心已转向基于计算机的电子设计自动化技术,即EDA (Electronic Design Automation)技术。
EDA技术就是依赖计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Description Language)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。
EDA技术使得设计者的工作仅限于利用软件的方式,即利用硬件描述语言和EDA软件来完成对系统硬件功能的实现。
硬件描述语言是EDA技术的重要组成部分,常见的HDL语言有VHDL、Verilog、HDL、ABLE、AHDL、System Verilog和System C。
其中VHDL、Verilog在现在的EDA设计中使用最多,也拥有几乎所有主流EDA工具的支持。
VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化硬件设计任务,提高了设计效率和可靠性。
在这次设计中,主要使用VHDL语言输入。
此次设计很好地完成了数字钟的定时、切换显示年月日和时分秒的功能,完成了小型FPGA的设计开发,锻炼了动手实践能力,达到了课程设计的目的。
关键词:EDA技术硬件描述语言VHDL 设计数字电子钟摘要 (2)1、课程设计目的 (4)2、课程设计内容及要求 (4)2.1 设计内容 (4)2.2 设计要求 (4)3、VHDL程序设计 (5)3.1 方案论证 (5)3.2 设计思路与方法 (6)3.2.1 设计思路 (6)3.2.2 设计方法 (7)4、仿真与分析 (7)5、器件编程下载及设计结果 (9)6、课程设计总结 (10)7、参考文献 (10)8、程序清单 (11)8.1 顶层模块 (11)8.2 秒脉冲模块 (13)8.3 数码管显示模块 (14)8.4 时分秒模块 (15)8.4.1 分秒模块 (16)8.4.2 小时模块 (18)8.5 年月日模块 (19)8.5.1 日期模块 (21)8.5.2 月份模块 (24)8.5.3 年份模块 (25)1、课程设计目的EDA技术课程设计在课程结束以后进行,在实践中验证理论知识,不仅是为了巩固课堂上所学知识,更是为了加深我们对EDA技术和VHDL语言的理解;为了让我们自己动手完成从设计输入、逻辑综合、功能仿真、设计实现到实现编程、时序仿真,一直到器件的下载测试的整个过程,真切感受利用EDA技术对FPGA进行设计开发的过程,锻炼和提高我们对器件的编程调试能力。
VHDL --计数显示电路
实验二计数显示电路一设计要求:设计一个输出为3位BCD码的计数显示电路。
该计数显示电路由三个模块构成:(1)十进制计数器(BCD_CNT)(2)七段显示译码器电路(DEC_LED)(3)分时总线切换电路(SCAN)。
二设计思路及原理:根据逻辑图采用层次化的设计方法,电路原理如图所示。
图1电路原理图长度为0~999的三位BCD码加法计数器,输出数据总线的宽度为12位。
将12位二进制数据总线经过分时总线切换电路模块,分时后的4位8421BCD送到七段显示译码器电路,计数值译为对应的编码,并在LED数码管上显示出对应的十进制数。
LED数码管共有七个输入端(a~g),三个数码管采用扫描显示方法,按个位、十位、百位的次序依次显示12位二进制的低四位、中间四位和高四位。
图2是源程序的RTL级电路图。
整个设计分十进制计数器模块(BCD_CNT)、分时总线切换电路模块(SCAN)和七段显示译码器电路模块(DEC_LED)构成。
总的输入为十进制计数器时钟clk,异步复位清零信号reset,分时总线切换电路时钟CL。
在reset信号为0期间,在每个clk的上升沿计数器将加1。
在每个cl的上升沿将会改变对三个数码管的扫描选通。
总的输出为数码管选通信号sel(三位),输出到七段数码管的数据信号ledout(七位)。
图2为了检验系统的正确与否,这里还添加了四个输出:十进制计数器输出c1(四位)、c2(四位)、c3(四位),分时总线切换电路一个输出q(四位),它是对计数器输出c1、c2、c3进行分时输出。
分时选通个、十、百位的数码管并将相应要显示的数据输出到七段显示译码器电路(DEC_LED),由此实现数码管的动态扫描显示。
三实验步骤及VHDL源代码:(1)十进制计数器电路(BCD_CNT)模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity BCD_CNT isport(clk,reset:in std_logic;c1,c2,c3:out std_logic_vector(3 downto 0));end BCD_CNT;architecture cnt of BCD_CNT issignal cn1,cn2,cn3:std_logic_vector(3 downto 0);begincnt1:process(clk,reset)beginif(reset='1') then cn1<="0000";elsif(clk'event and clk='1') thenif(cn1<9) then cn1<=cn1+1;else cn1<="0000";end if;end if;end process cnt1;c1<=cn1;cnt2:process(cn1(3),reset)beginif(reset='1') then cn2<="0000";elsif(cn1(3)'event and cn1(3)='0') thenif(cn2<9) then cn2<=cn2+1;else cn2<="0000";end if;end if;end process cnt2;c2<=cn2;cnt3:process(cn2(3),reset)beginif(reset='1') then cn3<="0000";elsif(cn2(3)'event and cn2(3)='0') thenif(cn3<9) then cn3<=cn3+1;else cn3<="0000";end if;end if;end process cnt3;c3<=cn3;end cnt;(2)分时总线切换电路(SCAN)模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity SCAN isport( c1,c2,c3:in std_logic_vector(3 downto 0);cl:in std_logic;q:out std_logic_vector(3 downto 0);sel:out std_logic_vector(2 downto 0));end SCAN;architecture one of SCAN issignal cnt:std_logic_vector(1 downto 0);signal q_temp:std_logic_vector(3 downto 0);signal sel_temp:std_logic_vector(2 downto 0);beginp1:process(cl)beginif(cl'event and cl='1') thenif(cnt<2) then cnt<=cnt+1;else cnt<="00";end if;end if;end process p1;end one;(3)七段显示译码器电路(DEC_LED)模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity DEC_LED isport( q:in std_logic_vector(3 downto 0);ledout:out std_logic_vector(6 downto 0));end DEC_LED;architecture one of DEC_LED isbeginprocess(q) --七段译码电路begincase q iswhen "0000" => ledout<="0111111"; --根据七段数码管亮灭正确为ledout赋值when "0001" => ledout<="0000110";when "0010" => ledout<="1011011";when "0011" => ledout<="1001111";when "0100" => ledout<="1100110";when "0101" => ledout<="1101101";when "0110" => ledout<="1111101";when "0111" => ledout<="0000111";when "1000" => ledout<="1111111";when "1001" => ledout<="1101111";when others => null;end case;end process;end one;四仿真结果编译结束后,新建一个”Vector Waveform File”,根据程序中的输入和输出的信号,分别’insert node or bus ’进行设置。
电子秒表设计VHDL
一、设计题目:基于VHDL语言的电子秒表设计(可调时,有闹钟、定时功能)二、设计目的:⑴掌握较复杂的逻辑设计和调试⑵学习用原理图+VHDL语言设计逻辑电路⑶学习数字电路模块层次设计⑷掌握QuartusII软件及Modelsim软件的使用方法三、设计内容:(一)设计要求1、具有以二十四小时计时、显示、整点报时、时间设置和闹钟的功能。
2、设计精度要求为1S。
(二).系统功能描述1 . 系统输入:系统状态及校时、定时转换的控制信号为k、set、ds;时钟信号clk,采用实验箱的50MHz;系统复位信号为reset。
输入信号均由按键产生。
系统输出:8位LED七段数码管显示输出,蜂鸣器声音信号输出。
多功能数字钟系统功能的具体描述如下:2. 计时:set=1,ds=1工作状态下,每日按24h计时制计时并显示,蜂鸣器无声,逢整点报时。
3. 校时:在set=0,ds=0状态下,按下“k键”,进入“小时”校准状态,之后按下“k键”则进入“分”校准状态,继续按下“k键”则进入“秒校准”状态,之后如此循环。
1)“小时”校准状态:在“小时”校准状态下,显示“小时”数码管以1Hz的频率递增计数。
2)“分”校准状态:在“分”校准状态下,显示“分”的数码管以1Hz的频率递增计数。
3)“秒”复零状态:在“秒复零”状态下,显示“分”的数码管以1Hz的频率递增计数。
4. 整点报时:蜂鸣器在“59”分钟的第50—59,以1秒为间隔分别发出1000Hz,500Hz的声音。
5. 显示:采用扫描显示方式驱动8个LED数码管显示小时、分、秒。
闹钟:闹钟定时时间到,蜂鸣器发出交替周期为1s的1000Hz、500Hz的声音,持续时间为一分钟;6. 闹钟定时设置:在set=0,ds=1状态下,按下“k”,进入闹钟的“时”设置状态,之后按下“k键”进入闹钟的“分”设置状态,继续按下“k 键”则进入“秒”设置状态, 之后如此循环。
1)闹钟“小时”设置状态:在闹钟“小时”设置状态下,显示“小时”的数码管以1Hz 的频率递增计数。
VHDL入门教程
VHDL入门教程VHDL(Very High-Speed Integrated Circuit HardwareDescription Language)是一种硬件描述语言,用于设计数字电路和系统。
它是由美国国防部在20世纪80年代早期开发的,并由IEEE 1076标准化。
VHDL可以用于描述电路结构、电路行为和模拟。
一、VHDL概述VHDL是一种硬件描述语言,它允许工程师以更高级的语言编写硬件描述。
它可以描述电路结构、电路行为和模拟。
VHDL可以应用于各种电子系统的设计,从简单的数字逻辑门到复杂的处理器。
二、VHDL基本结构VHDL的基本结构包括实体声明、体声明和结构化代码。
实体声明描述了电路的接口,包括输入和输出。
主体声明描述了电路的行为。
结构化代码定义了电路的结构。
三、VHDL数据类型VHDL提供了多种数据类型,包括标量类型(比如整数和实数)、数组类型和记录类型。
每种类型都有其特定的操作和范围。
四、VHDL信号VHDL中的信号用于在电路中传递信息。
信号可以在过程中赋值,并且具有各种延迟属性。
信号还可以连接到模块的输入和输出端口,以实现电路之间的通信。
五、VHDL实体和体VHDL设计包含实体和体。
实体描述了电路的接口和连接,而体描述了电路的行为。
实体和体之间使用端口来传递信息。
六、VHDL组件VHDL中的组件用于将电路模块化,以实现更高层次的设计和复用。
组件可以在实体中声明,并在体中实例化。
七、VHDL并发语句VHDL中的并发语句用于描述电路中多个同时运行的过程。
并发语句包括并行语句、过程、并行块和并行时钟。
八、VHDL测试VHDL测试包括自动测试和手动测试。
自动测试使用测试工具和仿真器来验证电路的正确性。
手动测试包括使用仿真器进行手工测试和调试。
九、VHDL实例以下是一个简单的VHDL实例,实现了一个4位二进制加法器:```vhdllibrary IEEE;use IEEE.STD_LOGIC_1164.all;entity binary_adder isporta : in std_logic_vector(3 downto 0);b : in std_logic_vector(3 downto 0);sum : out std_logic_vector(4 downto 0);carry : out std_logicend binary_adder;architecture behavior of binary_adder isbeginprocess(a, b)variable temp_sum : std_logic_vector(4 downto 0);variable temp_carry : std_logic;begintemp_sum := ("0000" & a) + ("0000" & b);temp_carry := '0' when temp_sum(4) = '0' else '1';sum <= temp_sum;carry <= temp_carry;end process;end behavior;```上述VHDL代码定义了一个名为`binary_adder`的实体,它有两个4位输入`a`和`b`,一个5位输出`sum`和一个单一位输出`carry`。
VHDL实验报告(1)
VHDL 实验报告******班级:电子0701学号:************实验一组合逻辑电路设计一实验目的:1. 熟悉mux+pluxII软件,可以进行新文件的编辑和文件的修改。
2. 掌握门电路VHDL语言程序设计方法。
3. 掌握选择器VHDL语言程序设计方法。
4. 掌握加法器VHDL语言程序设计方法。
5. 熟悉VHDL编程的基本方法。
二实验设备:1.计算机2.Max+PlusII软件三实验原理及内容:1 二输入与门(1)实验原理二输入与门是我们数字电路中的一个基础逻辑门电路,是最基本的逻辑门电路之一,也是最简单的逻辑门之一。
它能实现两个输入端的相与,一般有三个端口。
二输入与门的表达式是:Y=ab二输入与门的逻辑符号如图(1)所示,真值表如表(1)所示。
图(1)与门逻辑符号表(1)与门真值表(2)实验内容a.在mux+pluxII文本编辑环境下,打开新文本,编写两输入与门VHDL语言源程序,程序设计如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY and2 ISPORT(a,b: IN STD_LOGIC;Y: OUT STD_LOGIC);END and2;ARCHITECTURE behave OF and2 ISBEGINY <= a and b;END behave;b.对源程序进行编译,按照提示进行修改,直至编译通过。
c.对编译程序进行仿真,分析并记录仿真波形,其仿真波形图如图(2)所示。
图(2)二输入与门仿真图d.在自己的目录下保存相应的源文件、波形文件。
2 四选一选择器(1)实验原理四选一选择器如图(3)所示,真值表如表(2)所示。
图(3)mux4管脚图表(2)mux4真值表(2)实验内容a.在mux+plusII文本编辑环境下,打开新文件,编辑四选一VHDL源程序文件,其程序设计如下:LIBRARY IEEEUSE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT(A: IN STD_LOGIC_VECTOR (1 DOWNTO 0);D0,D1,D2,D3:IN STD_LOGIC;G:IN STD_LOGIC;Y: OUT STD_LOGIC);END mux4;ARCHITECTURE dataflow OF mux4 ISBEGINPROCESS (A,D0,D1,D2,D3,G)BEGINIF (G ='0') THENIF (A="00")THEN Y <= D0;ELSIF(A="01")THEN Y <= D1;ELSIF(A="10")THEN Y <= D2;ELSE Y <= D3;END IF;ELSE Y <='0';END IF;END PROCESS;END dataflow;b.对源程序进行编译,按照提示进行修改,直到编译通过。
VHDL电子表
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity szz is port(clk:in std_logic;
clk1:in std_logic; md1:in std_logic; md2:instd_logic_vector(1 downto 0);
speak:ou_logic_vector(6 downto 0);
selout:out std_logic_vector(2 downto 0));
end szz; architecture one of szz is signal sel:std_logic_vector(2 downto 0); signal hou1:std_logic_vector(3 downto 0); signal hou2:std_logic_vector(3 downto 0); signal min1:std_logic_vector(3 downto 0); signal min2:std_logic_vector(3 downto 0); signal seth1:std_logic_vector(3 downto 0); signal seth2:std_logic_vector(3 downto 0); signal setm1:std_logic_vector(3 downto 0); signal setm2:std_logic_vector(3 downto 0); signal sec1:std_logic_vector(3 downto 0); signal sec2:std_logic_vector(3 downto 0); signal h1:std_logi
VHDL与数字电路设计
本文由风中思念7贡献pdf文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
一、概述VHDL与数字电路设计一、概述二、VHDL语言三、用VHDL设计逻辑电路传统数字电路设计方法 EDA设计方法 PLD器件设计流程文本设计输入—VHDL程序设计数字电子技术的基本知识回顾组合逻辑电路编码器、译码器、数据选择器、加法器、数值比较器等传统设计方法传统的设计方法是基于中小规模集成电路器件进行设计(如74系列及其改进系列、CC4000系列、 74HC系列等都属于通用型数字集成电路),而且是采用自底向上进行设计:(1)首先确定可用的元器件;(2)根据这些器件进行逻辑设计,完成各模块;(3)将各模块进行连接,最后形成系统;(4)而后经调试、测量观察整个系统是否达到规定的性能指标。
时序逻辑电路同步时序逻辑电路异步时序逻辑电路寄存器、移位寄存器、计数器、序列信号发生器 EDA设计方法EDA(Electronics Design Automation)即电子设计自动化技术,是利用计算机工作平台,从事电子系统和电路设计的一项技术。
EDA技术为电子系统设计带来了这样的变化:(1)设计效率提高,设计周期缩短;(2)设计质量提高;(3)设计成本降低;(4)能更充分地发挥设计人员的创造性;(5)设计成果的重用性大大提高,省去了不必要的重复劳动。
自顶向下的设计方法数字电路的EDA设计是基于PLD进行设计的,支持自顶向下的设计方法:(1)首先从系统设计入手,在顶层进行功能划分和结构设计;(2)然后再逐级设计底层的结构;(3)并在系统级采用仿真手段验证设计的正确性;(4)最后完成整个系统的设计,实现从设计、仿真、测试一体化。
传统设计方法 vs EDA设计方法传统设计方法自底向上手动设计软硬件分离原理图设计方式系统功能固定不易仿真难测试修改模块难移植共享设计周期长PLD器件设计流程(1)PLD开发系统包括硬件和软件两部分。
VHDL实验指导书
实验一MAX plu sⅡ的使用【实验目的】1.掌握MAX plu sⅡ的使用2.掌握逻辑门的VHDL描述方法【实验内容】一、MAX plu sⅡ的设计流程1.创建设计输入文件(1)在“MAX2work”目录下创建自己的工作目录“mywork”,使得以后自己做的设计都保存在这个目录下。
(2)单击“file”菜单中的“new”选项,出现图1-1所示的新建文件窗口。
图1-1 新建文件窗口图(3)选择“Text Editor file”,单击“OK”按钮,出现文本编辑器,然后在文本编辑器里输入设计程序。
2.保存文件单击工具栏上的保存按钮,出现如图1-2所示的保存窗口。
图1-2 保存窗口图选择自己的工作目录,建立自己的文件名,保存所做的设计。
3.设置项目(1)选择菜单【File】/【Project】/【Set Project to Current File】命令,出现图1-3所示的窗口。
图1-3 设置项目窗口图设置项目名与设计文件名相同,一般软件会自动填入此项目名,这是后续处理必不可少的一步。
4.设定器件(1)选择菜单【Assign】/【Device】命令,出现图1-4所示的窗口。
图1-4 设定器件窗口图(2)在“Device Family”选项中选择所使用的系列芯片;在“Devices”中选择“AUTO”,让软件自动选择具体器件。
单击“OK”按钮,即设定好器件。
(3)单击工具栏上的保存按钮,保存好以上所有的设计和设置。
5.编译项目(1)选择菜单【MAX plu sⅡ】/【Compiler】命令,出现编译窗口,然后选择菜单命令【Processing】/【Functional SNF Extractor】如图1-5所示。
(2)单击“Start”按钮,开始编译,编译成功后,会出现1-6所示的窗口。
6.功能仿真(1)创建波形文件:在菜单栏中选择命令【File】/【New】,出现新建文件窗口,选择“Waveform Editor File”选项,如图1-7所示。
VHDL程序设计
VLSI电路设计课设VHDL语言基础胡小玲主要内容z硬件描述语言简介z VHDL基本结构z VHDL数据和表达式z VHDL描述语句z系统仿真z综合硬件描述语言HDLz Hardware Description Language广义地说,描述电子实体的语言:逻辑图,电路图。
硬件描述语言能在高层设计阶段描述硬件。
z起源:大规模电路的出现,使得逻辑图、布尔方程不太适用,需要在更高层次上描述系统;出现多种HDL语言,为便于信息交换和维护,出现工业标准。
•分类:VHDL、Verilog HDL等。
硬件描述语言HDLz HDL语言的特点–用HDL语言设计电路能够获得非常抽象的描述–用HDL描述电路设计,在设计的前期就可以完成电路功能级的验证–用HDL设计电路类似于计算机编程。
带有注解的文字描述更有利于电路的开发与调试z能提供HDL模拟器的公司:Cadence、Altera、Mentor Graphics、Synopsys等大型EDA公司和专门公司学习HDL的几点重要提示了解HDL的可综合性问题HDL有两种用途:系统仿真和硬件实现。
如果程序只用于仿真,那么几乎所有的语法和编程方法都可以使用。
但如果我们的程序是用于硬件实现(例如:用于FPGA设计),那么我们就必须保证程序“可综合”(程序的功能可以用硬件电路实现)。
不可综合的HDL语句在软件综合时将被忽略或者报错。
我们应当牢记一点:“所有的HDL描述都可以用于仿真,但不是所有的HDL描述都能用硬件实现。
”用硬件电路设计思想来编写HDL学好HDL的关键是充分理解HDL语句和硬件电路的关系。
编写HDL,就是在描述一个电路,我们写完一段程序以后,应当对生成的电路有一些大体上的了解,而不能用纯软件的设计思路来编写硬件描述语言。
要做到这一点,需要我们多实践,多思考,多总结。
语法掌握贵在精,不在多30%的基本HDL语句就可以完成95%以上的电路设计,很多生僻的语句并不能被所有的综合软件所支持,在程序移植或者更换软件平台时,容易产生兼容性问题,也不利于其他人阅读和修改。
VHDL程序设计教程习题解答
VHDL程序设计教程习题参考解答第1章思考题解答1.什么是VHDL?简述VHDL的发展史。
答:VHDL是美国国防部为电子项目设计承包商提供的,签定合同使用的,电子系统硬件描述语言。
1983年成立VHDL语言开发组,1987年推广实施,1993年扩充改版。
VHDL 是IEEE标准语言,广泛用于数字集成电路逻辑设计。
2.简述VHDL设计实体的结构。
答:实体由实体名、类型表、端口表、实体说明部分和实体语句部分组成。
根据IEEE标准,实体组织的一般格式为:ENTITY 实体名 IS[GENERIC(类型表);] --可选项[PORT(端口表);] --必需项实体说明部分; --可选项[BEGIN实体语句部分;]END [ENTITY] [实体名];3.分别用结构体的3种描述法设计一个4位计数器。
答:用行为描述方法设计一个4位计数器如下,其它描述方法,读者可自行设计。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;ENTITY countA ISPORT (clk,clr,en:IN STD_LOGIC;Qa,qb,qc,qd:OUT STD_LOGIC);END countA;ARCHITECTURE example OF countA ISSIGNAL count_4:STD_LOGIC_vector (3 DOWNTO 0);BEGINQa <= count_4(0);Qb <= count_4(1);Qc <= count_4(2);Qd <= count_4(3);PROCESS (clk,clr)BEGINIF (clr = '1' ) THENCount_4 <= "0000";ELSIF (clk'EVENT AND clk = '1' ) THENIF (en = '1' ) THENIF (count_4 = "1111") THENcount_4 <= "0000";ELSEcount_4 <= count_4+ '1';END IF;END IF;END IF;END PROCESS;END example;第2章思考题解答1.什么叫对象?对象有哪几个类型?答:在VHDL语言中,凡是可以赋于一个值的客体叫对象(object)。
Verilog HDL数字集成电路设计原理与应用(第二版)(蔡觉平) (4)
本章通过数字电路中基本逻辑电路的Verilog HDL程序设计 进行讲述,要求读者掌握基本逻辑电路的可综合性设计,为 具有特定功能的复杂电路的设计打下基础。
组合电路的设计需要从以下几个方面考虑:首先,所 用的逻辑器件数目最少,器件的种类最少,且器件之间的连 线最简单,这样的电路称为“最小化”电路。其次,为了满 足速度要求,应使级数尽量少,以减少门电路的延迟;电路 的功耗应尽可能地小,工作时稳定可靠。
组合逻辑电路的描述方式有四种:真值表、逻辑代数、 结构描述、抽象描述。采用Verilog HDL进行组合逻辑电路 设计主要采用的就是这几种方式。下面结合具体的实例简单 介绍达四种描述方式。 20
6
例4.1-1 用Verilog HDL语言设计模256(8 bit)计数 器。
(a) 可综合程序描述方式: module counter (count,clk,reset); output count; input clk,reset; reg [7:0] count; reg out; always @(posedge clk) 7
wire [1:0] sum; reg OUT; assign sum=A+B+C; always @(sum)
if (sum>1) else
endmodule
OUT=1; OUT=0;
32
可以看到,以上4种Verilog HDL描述方式都可以对表决 电路进行设计。这里应该指出的是,Verilog HDL程序是对 逻辑电路功能的描述性设计,并非最终得到的电路。EDA综 合工具可以将Verilog HDL程序综合成物理电路形式,通过 电路优化,从而得到符合设计要求的最简化电路。采用 Synplify软件对上面4种方法中任一种方法设计的Verilog HDL程序进行综合(采用Altera公司的Stratix Ⅱ器件),可 以得到相同的最简化电路,如图4.2-4所示。
VHDL数字频率计设计课件
CQ=>DIN (27 DOWNTO 24),CARRY_OUT=>CARRY7); U8:CNT10 PORT MAP(CLK=>CARRY7,CLR=>CLR_CNT,ENA=>TSTEN,
3) 测频控制信号发生器的源程序TESTCTL.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
--测频控制信号发生器
USE IEEE.STD_LOGIC_UNSIGNED.ALL
ENTITY TESTCTL IS
PORT (CLK:IN STD_LOGIC;
PORT(CLK,CLR,ENA:IN STD_LOGIC; CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT:OUT STD_LOGIC);
END COMPONENT; COMPONENT REG32B --待调用的32位锁存器端口定义
...
COMPONENT TESTCTL --待调用的测频控制信号发生器端口定义 ...
CQ=>DIN (31 DOWNTO 28),CARRY_OUT=>CARRY8); U9:REG32B PORT MAP(LOAD=>LOAD,DIN=>DIN(31 DOWNTO 0),DOUT=>DOUT); END ART;
3. 硬件逻辑验证
选择实验电路结构图NO.0,由5.2节的实验电路结构图NO.0 和图6.5确定引脚的锁定,测频控制器时钟信号CLK(1 Hz)可接 CLOCK1,待测频FSIN可接CLOCK0,8位数码显示输出 DOUT[31..0]接PIO47~PIO16。
推荐-基于VHDL语言的电子表设计 精品
目录设计制作电子表一、设计要求利用VHDL语言设计一个电子时钟,可以显示时、分、秒,具有时间设置功能,要求走时误差不大于每天10秒。
可采用数码管或液晶显示,最好设计出个性化显示界面。
二、设计思路电子表其实质为计数器,计数单位为1秒。
由秒,分,时组成,秒和分是60进制,用十进制和六进制组成,时是24进制,直接设计一个24进制计数器即可。
要让结果显示出来,则用七段式数码管输出显示计数值。
此电子表需要有置数功能,加一个控制开关,当开关为低电平时计数,当开关为高电平时置数。
设计思路如下图所示:三、程序设计1.置数还是计数电子表有计数和指数两种状态,工作时执行计数还是执行置数则由一控制使能端EN决定,当EN为低电平时,电子表计数,当EN为高电平时,电子表置数。
2.在哪一位置数该电子表有秒低位,秒高位,分低位,分高位,时低位,时高位组成,共有六位,置数由位选决定给哪一位置数。
设置一个三位的二进制开关p2,p1,p0,通过编码电路实现选择置数位。
①当p2p1p0为“000”时,不选择任何位,此时电子表只是停止计数,不置数。
②当p2p1p0为“001”时,秒低位置数。
③当p2p1p0为“010”时,秒高位置数。
④当p2p1p0为“011”时,分低位置数。
⑤当p2p1p0为“100”时,分高位置数。
⑥当p2p1p0为“101”时,时低位置数。
⑦当p2p1p0为“110”时,时高位置数。
关键程序:if t'event and t='1' thenif en='0' then计数语句elsif en='1' and p="001" then s0<=num;end if;end if;3.计数单位首先脉冲频率要足够大,提供一个较快的扫描频率,时数码管稳定地显示计数值。
计数单位为1秒,对脉冲clk 进行分频,得到周期为1秒的计数单位t。
程序中对clk进行512分频,所以需要一个相近的脉冲,试验箱上的CLK4的频率范围为625KHz~19.5Hz,通过跳线帽选择可以调出624Hz的频率。
VHDL程序设计数字电子表2-精品文档35页
-- 子文件定义代码
ARCHITECTURE a OF COUNTER24 IS
SIGNAL Q
:
STD_LOGIC_VECTOR (4 DOWNTO 0) ;
SIGNAL RST, DLY :
STD_LOGIC;
BEGIN
PROCESS (CP,RST)
BEGIN
IF RST = '1' THEN
CP : IN STD_LOGIC; BIN : OUT STD_LOGIC_VECTOR (5 DOWNTO 0); S : IN STD_LOGIC; CLR : IN STD_LOGIC; EC : IN STD_LOGIC; CY24 : OUT STD_LOGIC ); END COUNTER24;
CP : IN STD_LOGIC; BIN : OUT STD_LOGIC_VECTOR (5 DOWNTO 0); S : IN STD_LOGIC; CLR : IN STD_LOGIC; EC : IN STD_LOGIC; CY60 : OUT STD_LOGIC ); END COUNTER60;
BIN <=
DBS WHEN ENB = "001" ELSE DBM WHEN ENB = "010" ELSE DBH WHEN ENB = "100" ELSE "000000";
End Block Free_Counter;
--主文件声明代码
COMPONENT COUNTER60 PORT(
ENB (2)
扫描电路 S(3)
ENB (1)
ENB (0)
NUM(4)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
-- 子文件定义代码
ARCHITECTURE a OF COUNTER24 IS
ENB (0)
NUM(4)
CYH
BCD 选择
BCD (7-4)
BCD (3-0)
24
进CYM制计源自器DBH60进
CYS
制
计数器
DBM
60 进 制 计数器
DBS
BCD(8)BIN(6)
BIN ( 6 )
CLR
38
6 个七段数码管
译
码
SEG (8)
时钟显示 电路方框图
CP 分频器Q SEC
BCD 七段译码电路
ELSIF CP'event AND CP = '1' THEN DLY <= Q(5); IF EC = '1' THEN Q <= Q+1; END IF;
END IF; END PROCESS;
END a;
CY60 <= NOT Q(5) AND DLY; RST <= '1' WHEN Q=60 OR CLR='1' ELSE
-- 子文件定义代码 --*************************************************** LIBRARY IEEE; USE IEEE.STD_LOGIC_UNSIGNED.ALL; --*************************************************** ENTITY COUNTER60 IS PORT(
END PROCESS;
Free_Counter : Block Signal Q Signal DLY
Begin
: STD_LOGIC_VECTOR(24 DOWNTO 0); : STD_LOGIC;
PROCESS (CP) Begin
IF CP'Event AND CP='1' then DLY <= Q(21); Q <= Q+1;
CP : IN STD_LOGIC; BIN : OUT STD_LOGIC_VECTOR (5 DOWNTO 0); S : IN STD_LOGIC; CLR : IN STD_LOGIC; EC : IN STD_LOGIC; CY60 : OUT STD_LOGIC ); END COUNTER60;
CP : IN STD_LOGIC; BIN : OUT STD_LOGIC_VECTOR (5 DOWNTO 0); S : IN STD_LOGIC; CLR : IN STD_LOGIC; EC : IN STD_LOGIC; CY24 : OUT STD_LOGIC ); END COUNTER24;
BIN <=
DBS WHEN ENB = "001" ELSE DBM WHEN ENB = "010" ELSE DBH WHEN ENB = "100" ELSE "000000";
End Block Free_Counter;
--主文件声明代码
COMPONENT COUNTER60 PORT(
-- 子文件定义代码
ARCHITECTURE a OF COUNTER60 IS SIGNAL Q : STD_LOGIC_VECTOR (5 DOWNTO 0) ; SIGNAL RST, DLY : STD_LOGIC;
BEGIN
PROCESS (CP,RST) BEGIN
IF RST = '1' THEN Q <= "000000";
CP : IN STD_LOGIC; BIN : OUTSTD_LOGIC_VECTOR (5 DOWNTO 0); S : IN STD_LOGIC; CLR : IN STD_LOGIC; EC : IN STD_LOGIC; CY60 : OUT STD_LOGIC ); END COMPONENT;
END IF; END PROCESS;
SEC <= Q(21) AND NOT DLY; S <= Q(15 DOWNTO 13);
--about 1Hz --about 250 Hz
ENB <=
"001" WHEN (S=0 OR S=1) ELSE "010" WHEN (S=2 OR S=3) ELSE "100" WHEN (S=4 OR S=5) ELSE "000";
-- 子文件定义代码 --*************************************************** LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; --*************************************************** ENTITY COUNTER24 IS PORT(
第六章 VHDL综合应用
数字电子时钟显示电路
6 个七段数码管 SEGOUT ( 8 )
时钟显示 电路方框图
SELOUT ( 6 )
FPGA
CLR
CP
38
6 个七段数码管
译
码
SEG (8)
时钟显示 电路方框图
CP 分频器Q SEC
BCD 七段译码电路
ENB (2)
扫描电路 S(3)
ENB (1)
'0'; BIN <= Q WHEN S = '1' ELSE
"000000";
--主文件声明代码
COMPONENT COUNTER24 PORT(
CP : IN STD_LOGIC; BIN : OUTSTD_LOGIC_VECTOR (5 DOWNTO 0); S : IN STD_LOGIC; CLR : IN STD_LOGIC; EC : IN STD_LOGIC; CY60 : OUT STD_LOGIC ); END COMPONENT;
ENB (2)
扫描电路 S(3)
ENB (1)
ENB (0)
NUM(4)
CYH
BCD 选择
BCD (7-4)
BCD (3-0)
24
进
CYM
制
计数器
DBH
60
进
CYS
制
计数器
DBM
60 进 制 计数器
DBS
BCD(8)BIN(6)
BIN ( 6 )
CLR
PROCESS (CP) Begin IF CP'Event AND CP='1' then DLY <= Q(21); Q <= Q+1; END IF;