EDA理论复习整合版_第1页
EDA理论复习整合版_第2页
EDA理论复习整合版_第3页
EDA理论复习整合版_第4页
EDA理论复习整合版_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、什么叫EDA技术:狭义的EDA技术,就是指以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成将用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术,或称为IES/ASIC自动设计技术。广义的EDA技术,除了狭义的EDA技术外,还包括计算机辅助分析CAA技术(如PSPICE,EWB,MATLAB等),印刷电路板计算机辅

2、助设计PCB-CAD技术(如PROTEL,ORCAD等)。使用EDA技术进行电子系统设计的优点:(1)用软件的方式设计硬件;()用软件方式设计的系统到硬件系统的转换,由有关的开发软件自动完成;()设计过程中可用有关软件进行各种仿真;(4)系统可现场编程,在线升级;()整个系统可集成在一个芯片上,体积小、功耗低,可靠性高。EDA技术特点1.用软件编写的方法设计硬件2.用软件方法设计的系统到硬件系统的转换由软件自动完成的3.设计过程中可用有关软件进行各种仿真4.系统可现场编程,在线升级5.整个系统可集成在一个芯片上,体积小,功耗低,可靠性高6.从以前的“组合设计”转向真正的“自由设计”7.设计的移

3、植性好,效率高8.非常适合分工设计,团队合作应该掌握的内容大规模可编程逻辑器件、描述语言硬件、软件开发工具、实验开发系统程序输入方法:1.原理图输入方法2.状态图输入方法3.VHDL文本逻辑综合:将电路的高级语言描述转化成低级的,可与FPGA/CPLD或ASIC门阵列基本结构相映射的网表文件。逻辑适配:将由综合器产生的网表文件针对某一具体的目标器进行逻辑映射操作,(其中包括底层器件配置、逻辑分割、逻辑优化、布线与操作等,)配置于指定的目标器件中,产生最终的下载文件(如JEDEC格式的文件)的过程逻辑配置,经过用户设计输入并经过开发系统编译后产生的配置数据文件,将其装入FPGA芯片内部的可配置存

4、储器的过程,简称FPGA的下载。设计过程中仿真有三种:行为仿真,功能仿真,时序仿真时序仿真: 将接线器/适配器所产生的VHDL网表文件送到VHDL仿真器中所进行的仿真。 行为仿真:将VHDL设计源程序直接送到VHDL仿真器中所进行的仿真。功能仿真:将综合后的VHDL网表文件再送到VHDL仿真器中所进行的仿真。硬件仿真:就是在ASIC设计中,常利用FPGA对系统的设计进行功能检测,通过后再将其VHDL设计以ASIC形式实现的过程。硬件测试:就是把FPGA或CPLD直接用于应用系统的设计中,将下载文件下载到FPGA后,对系统设计进行功能检测的过程。ISP-in system programmabl

5、e 在系统可编程可编程功能单元(Programmable Function Unit,简称PFU);无RAM的可编程功能单元(Programmable Function Unit without RAM,简称PFF)系统时钟锁相环(PLL)FPGA的配置流程一般包括芯片的初始化、配置和启动等过程。Asic工程设计流程:1.系统规格说明2.系统划分3.逻辑设计与综合4.综合后仿真5.版图设计6.版图验证7.参数提取与后仿真8.制版、流片9.芯片测试数字系统设计方法:模块设计法、自顶向下设计法、自底向上设计法数字系统设计步骤:1.系统任务分析2.确定逻辑算法3.建立系统及子系统模型4.系统逻辑描述

6、5.逻辑电路级设计及系统仿真6.系统的物理实现FPGA的英文全称是Field Programmable Gate Array,现场可编程门阵列 CPLD的英文全称是Complex Programmable Logic Devices,复杂可编程逻辑器件二者在保存逻辑信息方面的区别是FPGA掉电后将丢失原有的逻辑信息而CPLD却能保持原有的逻辑信息。高集成度、高速度和高可靠性FPGA/CPLD最明显的特点VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language VHDL主要用于描述数字系统的结构、行为、功

7、能和接口。VHDL程序设计中常用的库:IEEE库 STD库 WORK库VITAL库。VHDL程序基本结构:库、程序包使用说明、实体描述和实体对应的结构体描述VHDL程序设计中常用的库:IEEE库 STD库 WORK库VITAL库。常用的预定义的程序包:STD_LOGIC_1164程序包,STD_LOGIC_ARITH程序包,STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序包,STANDARD和TEXTIO程序包。VHDL的基本标识符就是以英文字母开头,不连续使用下划线,不以下划线“_”结尾的,由字母、数字以及下划线“_”组成的字符串。VHDL的数据对象有 常量 、 变

8、量 和 信号 三种。VHDL中的数据类型按照数据类型的构成可以分成四大类:标量型(SCALAR TYPE):属单元素的最基本的数据类型,通常用于描述一个单值数据对象,它包括实数类型、整数类型、枚举类型和时间类型。合类型(COMPOSITE TYPE):可以由细小的数据类型复合而成,如可由标量复合而成。复合类型主要有数组型(ARRAY)和记录型(RECORD)。存取类型(ACCESS TYPE):为给定的数据类型的数据对象提供存取方式。文件类型(FILES TYPE):用于提供多值存取类型。VHDL中的枚举数据类型是用文字符号来表示一组实际的二进制数的类型(若直接用数值来定义,则必须使用单引号)

9、VHDL的数据对象常量,变量和信号 三者的使用比较 (1) 从硬件电路系统来看,常量相当于电路中的恒定电平,如GND或VCC接口,而变量和信号则相当于组合电路系统中门与门间的连接及其连线上的信号值。 (2) 从行为仿真和VHDL语句功能上看,二者的区别主要表现在接受和保持信号的方式、信息保持与传递的区域大小上。例如信号可以设置延时量,而变量则不能;变量只能作为局部的信息载体,而信号则可作为模块间的信息载体。变量的设置有时只是一种过渡,最后的信息传输和界面间的通信都靠信号来完成。(3) 从综合后所对应的硬件电路结构来看,信号一般将对应更多的硬件结构,但在许多情况下,信号和变量并没有什么区别。例如

10、在满足一定条件的进程中,综合后它们都能引入寄存器。这时它们都具有能够接受赋值这一重要的共性,而VHDL综合器并不理会它们在接受赋值时存在的延时特性。(4) 虽然VHDL仿真器允许变量和信号设置初始值,但在实际应用中,VHDL综合器并不会把这些信息综合进去。这是因为实际的FPGA/CPLD芯片在上电后,并不能确保其初始状态的取向。因此,对于时序仿真来说,设置的初始值在综合时是没有实际意义的。四类操作符,即逻辑操作符(Logical Operator)、关系操作符(Relational Operator)、算术操作符(Arithmetic Operator)和符号操作符(Sign Operator

11、)重载操作符(Overloading Operator)为什么从本质上讲,VHDL所有语句都是并行语句?答:顺序语句是相对于并行语句而言的,其特点是每一条顺序语句的执行(指仿真执行)顺序是与它们的书写顺序基本一致的 顺序语句只能出现在进程(Process)和子程序中。在VHDL中,一个进程是由一系列顺序语句构成的,而进程本身属并行语句,这就是说,在同一设计实体中,所有的进程是并行执行的。然而任一给定的时刻内,在每一个进程内,只能执行一条顺序语句。一个进程与其设计实体的其他部分进行数据交换的方式只能通过信号或端口。如果要在进程中完成某些特定的算法和逻辑操作,也可以通过依次调用子程序来实现,但子程

12、序本身并无顺序和并行语句之分。利用顺序语句可以描述逻辑系统中的组合逻辑、时序逻辑或它们的综合体。VHDL有如下六类基本顺序语句:赋值语句;转向控制语句;等待语句;子程序调用语句;返回语句;空操作语句。VHDL是一种强数据类型语言,强数据类型的具体含义是:(1) 各数据对象必须具有确定的数据类型 (2)具有相同数据类型的数据对象才能进行相互操作 。VHDL的描述风格有三种,分别是行为描述、数据流描述和结构描述。VHDL的元件例化语句用于建立端口之间映射关系的两种常用方式是 名字关联方式 和 位置关联方式。状态机的两种基本操作分别是状态机内部状态转换和产生输出信号序列IEEE_1076标准程序包中

13、定义的四种常用端口模式分别是IN模式、OUT模式、BUFFER模式和 INOUT 模式。EDA实验开发系统的基本组成:1.信号发生模块2.输出信号显示模块3.监控程序模块4.目标芯片及其配适座.编程下载电路5.其他转换电路系统及各种扩展接口使用通用EDA实验开发系统的基本步骤如下:(1) 根据所设计的实体的输入和输出要求,从实验电路结构图中选择合适的实验电路结构图,并记下对应的实验模式。(2) 根据所选的实验电路结构图、拟采用的实验或开发芯片的型号以及系统结构图信号名与芯片引脚对照表,确定各个输入和输出所对应的芯片引脚号,并将有关信息填入芯片引脚的锁定过程表格中,以供设计中的有关步骤使用。 (

14、3) 进入EDA设计中的编程下载步骤时,首先在EDA实验开发系统断电的情况下,将EDA实验开发系统的编程下载接口,通过实验开发系统提供的编程下载线(比如并行下载接口扁平电缆线、USB下载线)与计算机的有关接口(比如打印机并行接口、USB接口)连接好,并将有关选择开关置于所要求的位置,然后接通EDA实验开发系统的输入电源,打开EDA实验开发系统上的电源开关,这时即可进行编程下载的有关操作。(4) 编程下载成功后,首先通过模式选择键将实验模式转换到前面选定的实验模式。若输入和输出涉及时钟、声音、视频等信号,还应将相应部分的短路帽或接口部分连接好。之后输入设计实体所规定的各种输入信号,即可进行相应的

15、实验。 对于目标器件为FPGA/CPLD的VHDL工程设计,其工作步骤如何?并简要介绍各步的作用。答:(1)源程序的编辑和编译:利用EDA工具的文本编辑器或图形编辑器将设计用文本或图形方式表达出来,进行排错编译,变成VHDL文件格式;(2)逻辑综合和优化:将电路的高级语言描述转换成低级的,可与FPGA/CPLD或构成ASIC的门阵列基本结构相映射的网表文件,以便将VHDL的软件设计与硬件的可实现性挂钩;(3)目标器件的布线/适配:将由综合器产生的网表文件针对某一具体的目标器进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、布线与操作等,配置于指定的目标器件中,产生最终的下载文件,如J

16、EDEC格式的文件;(4)目标器件的编程/下载:将由FPGA/CPLD布线/适配器产生的配置/下载文件通过编程器或下载电缆载入目标芯片FPGA或CPLD中;(5)设计过程中的有关仿真:设计过程中为了了解设计的结果,可通过仿真器进行有关仿真,包括行为仿真,功能仿真和时序仿真;(6)硬件仿真/硬件测试:在ASIC设计中,常利用FPGA对系统的设计进行功能检测,通过后再将其VHDL设计以ASIC形式实现,这个过程称之为硬件仿真;针对FPGA或CPLD直接用于应用系统的设计中,将下载文件下载到FPGA后,对系统的设计进行的功能检测,这个过程称之为硬件测试。从学习和使用的角度,你认为EDA技术主要包括哪

17、几方面的内容?这几个方面在整个电子系统的设计中分别起什么作用?答: 大规模可编程逻辑器件;硬件描述语言; 软件开发工具; 实验开发系统。大规模可编程逻辑器件是利用EDA技术进行电子系统设计的载体,硬件描述语言是利用EDA技术进行电子系统设计的主要表达手段,软件开发工具是利用EDA技术进行电子系统设计的智能化的自动化设计工具,实验开发系统则是利用EDA技术进行电子系统设计的下载工具及硬件验证工具。阐述EDA实验开发系统的主要作用及基本组成。EDA实验开发系统的主要用于提供可编程逻辑器件的下载电路及EDA实验开发的外围资料,以供硬件验证用。一般包括:A实验或开发所需的各类基本信号发生模块,包括时钟

18、,脉冲,高低电平等;BFPGA/CPLD输出信号显示模块,包括数码显示,发光器显示,声响指示等;C监控程序模块,提供“电路重构软配置” D目标芯片配座以及上面的FPGA/CPLD目标芯片和编程电路下载。E其他转换电路系统及各种扩展接口。为什么从本质上讲,VHDL所有语句都是并行语句?答:顺序语句是相对于并行语句而言的,其特点是每一条顺序语句的执行(指仿真执行)顺序是与它们的书写顺序基本一致的 顺序语句只能出现在进程(Process)和子程序中。在VHDL中,一个进程是由一系列顺序语句构成的,而进程本身属并行语句,这就是说,在同一设计实体中,所有的进程是并行执行的。然而任一给定的时刻内,在每一个

19、进程内,只能执行一条顺序语句。一个进程与其设计实体的其他部分进行数据交换的方式只能通过信号或端口。如果要在进程中完成某些特定的算法和逻辑操作,也可以通过依次调用子程序来实现,但子程序本身并无顺序和并行语句之分。利用顺序语句可以描述逻辑系统中的组合逻辑、时序逻辑或它们的综合体。阐述EDA实验开发系统的基本组成一般包括:A实验或开发所需的各类基本信号发生模块,包括时钟,脉冲,高低电平等;BFPGA/CPLD输出信号显示模块,包括数码显示,发光器显示,声响指示等;C监控程序模块,提供“电路重构软配置” D目标芯片配座以及上面的FPGA/CPLD目标芯片和编程电路下载。E其他转换电路系统及各种扩展接口

20、。EDA技术的应用展望EDA技术将广泛应用与高校电类专业的时间教学中;将广泛应用于科研工作和新产品的开发中;将广泛应用于集成电路的开发中;将广泛应用到传统机电设备的升级换代和技术改造中一个完整的VHDL源程序包括:其中的第一部分是库和程序包(用于打开(调用)本设计实例将要用到的库和程序包),是用VHDL编写的共享文件,定义结构体和实体中要用到的数据类型、元件、子程序等,放在名为IEEE的库中。第二部分是实体说明(用于描述该设计实体与外界的接口信号说明),相当于定义电路单元的管脚信息。实体名是自己任意取的,但要注意要与项目名和文件名相同,并符合标识符规则。实体以ENTITY开头,以END结束。第

21、三部分是结构体(用于描述该设计实体内部的组成及内部工作的逻辑关系),用来描述电路的内部结构和逻辑功能。利用EDA技术进行电子系统设计仿真的基本步骤及要求如下:(1)分析系统设计要求和设计思想,弄懂系统的工作原理/工作流程;(2)了解各种输入信号及要求,设置各种输入激励信号:各输入信号本身的要求,相互之间的要求(如输入的先后,时间间隔的大小等);各种输入信号的设置有两种:仿真波形直接设置,测试程序文本设置;测试用例应尽可能覆盖整个系统的各种可能情况。(3)估计各种输出的期望值:对应各种可能的输入,估计其输出期望值;(4)进行实际仿真及结果分析:执行仿真操作进行实际仿真,并将仿真结果与期望值进行比

22、较与分析;(5)仿真改进与完善:若仿真结果与期望值不一致,则查找原因,进行程序和仿真设置值修改,直到完全达到要求为止。1)用VHDL程序设计一个带有计数使能(ENA)和清零(CLR)功能的16进制计数器。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT16 IS PORT(  CLK: IN STD_LOGIC;          CLR: IN STD_LOGIC;  

23、0;       ENA: IN STD_LOGIC;          CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);          CARRY_OUT: OUT STD_LOGIC );END CNT16;ARCHITECTURE ART OF CNT16 ISSIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK,CLR,ENA)BEGIN&

24、#160; IF CLR='1'THEN CQI<="0000"  ELSIF CLK'EVENT AND CLK ='1' THEN    IF ENA = '1'THENIF CQI = "1001" THEN      CQI<="0000" CARRY_OUT<='1'      ELSE    &#

25、160;      CQI <= CQI+'1'          CARRY_OUT<='0'        END IF;  END IF;END PROCESS;  CQ<=CQI;END ART;2)用VHDL设计一个分频电路,要求将1MHZ的方波信号变为20KHZ的方波信号。答:LIBRARY IEEE;USE IEEE.STD_LOGIC_116

26、4.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JYFP IS PORT( CLK:IN STD_LOGIC; Q:OUT STD_LOGIC );END ENTITY JYFP; ARCHITECTURE ART OF JYFP ISBEGINPROCESS(CLK)VARIABLE TEMP:NATURAL RANGE 0 TO 50; BEGIN IF RISING_EDGE(CLK) THEN IF (TEMP>=50) THEN TEMP:=0; ELSE TEMP:=TEMP+1; END IF; IF(TEMP<=24) T

27、HEN Q<=1; ELSE Q<=0; END IF; END IF; END PROCESS CLK;END ARCHITECTURE ART;3)用VHDL设计一个将6位BCD码数据DIN23.0用6个共阴数码管进行动态扫描显示的电路。答:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DISPLAY IS PORT(CLK:IN STD_LOGIC; -动态扫描显示时钟,60Hz以上 DIN: IN STD_LOGIC_VECTOR(23 DOWNTO 0);

28、-6位BCD码输入数据 COM:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);-数码管COM端的选择输出端 SEG: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -数码管8段显示驱动输出端END ENTITY DISPLAY; (4分)ARCHITECTURE ART OF DISPLAY IS SIGNAL CNT:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL BCD:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK) -产生动态扫描显示的控制信号 BEGIN IF CLK&

29、#39;EVENT AND CLK='1' THEN IF CNT="101" THEN CNT<="000"ELSE CNT<=CNT+'1' END IF ; END IF; END PROCESS; PROCESS(CNT) IS BEGIN CASE CNT IS -显示数据的选择,对应显示数码管公共端的选通,低电平有效 WHEN "000" =>BCD<=DIN(3 DOWNTO 0); COM<="111110" WHEN "001

30、" =>BCD<=DIN(7 DOWNTO 4); COM<="111101" WHEN "010" =>BCD<=DIN(11 DOWNTO 8); COM<="111011" WHEN "011" =>BCD<=DIN(15 DOWNTO 12); COM<="110111" WHEN "100" =>BCD<=DIN(19 DOWNTO 16); COM<="101111&quo

31、t; WHEN "101" =>BCD<=DIN(23 DOWNTO 20); COM<="011111" WHEN OTHERS=>BCD<="0000" COM<="111111" END CASE;CASE BCD IS -将BCD码转换成数码管的8段驱动信息,高电平有效 WHEN "0000" => SEG<="00111111"- =>dp/g/f/e/d/c/b/a WHEN "0001"

32、=> SEG<="00000110" WHEN "0010" => SEG<="01011011" WHEN "0011" => SEG<="01001111" WHEN "0100" => SEG<="01100110" WHEN "0101" => SEG<="01101101"WHEN "0110" => SEG<=&q

33、uot;01111101"WHEN "0111" => SEG<="00000111"WHEN "1000" => SEG<="01111111"WHEN "1001" => SEG<="01101111"WHEN "1010" => SEG<="01110111" WHEN "1011" => SEG<="01111100"

34、WHEN "1100" => SEG<="00111001" WHEN "1101" => SEG<="01011110" WHEN "1110" => SEG<="01111001" WHEN "1111" => SEG<="01110001" WHEN OTHERS => SEG<="00000000" END CASE ; END PROCESS;EN

35、D ARCHITECTURE ART;4)具有左移或右移一位、并行输入和同步复位功能的8位移位寄存器。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SFTREG IS PORT(CLK, RESET: IN STD_LOGIC; LSFT, RSFT: IN STD_LOGIC; -左移和右移使能 DATA: IN STD_LOGIC_VECTOR(7 DOWNTO 0); MODE: IN STD_LOGIC_VECTOR(1 DOWNTO 0); -模式控制 QOUT: BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0)

36、;END ENTITY SFTREG;ARCHITECTURE ART OF SFTREG IS BEGIN PROCESS IS BEGIN WAIT UNTIL(RISING_EDGE(CLK); IF(RESET='1')THENQOUT<="00000000" ELSE -同步复位功能的实现 CASE MODE IS WHEN "01"=>QOUT<=RSFT&QOUT(7 DOWNTO 1);-右移一位 WHEN "10"=>QOUT<=QOUT(6 DOWNTO 0)&

37、amp;LSFT; -左移一位 WHEN "11"=>QOUT<=DATA; -并行输入 WHEN OTHERS=>NULL; END CASE; END IF; END PROCESS;END ARCHITECTURE ART; 5)十进制加法计数器之一LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;-打开重载程序包ENTITY CNT10A IS PORT(CLR:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(3 DOWNTO

38、 0); CNT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY CNT10A; ARCHITECTURE ART OF CNT10A IS BEGIN PROCESS(DIN,CLR) IS BEGIN IF (CLR= '1' OR DIN= "1001") THEN CNT<="0000" -有清零信号,或计数已达9, CNT输出0, ELSE -否则作加1操作 CNT<=DIN+1; -使用了重载运算符"+" END IF; END PROCESS;END A

39、RCHITECTURE ART; 3线-8线译码器(高电平有效)。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DECODER IS PORT(A, B, C:IN STD_LOGIC; Y: OUT BIT_VECTOR (7 DOWNTO 0);END ENTITY DECODER; -使用SLL逻辑运算符ARCHITECTURE ART1 OF DECODER IS SIGNAL SR: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN SR<=C

40、&B&A; Y<= "00000001" SLL (CONV_INTEGER(SR);END ARCHITECTURE ART1;-使用PROCESS语句ARCHITECTURE ART2 OF DECODER IS SIGNAL SR: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN SR<=C&B&A; PROCESS(SR) IS BEGIN Y<=(OTHERS=>'1') ; Y(CONV_INTEGER(SR)<='1' END PROCESS;

41、END ARCHITECTURE ART2;-使用WHEN - ELSE 语句 ARCHITECTURE ART3 OF DECODER IS SIGNAL SR: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN SR<=C&B&A; Y(0)<='1' WHEN SR="000" ELSE '0' Y(1)<='1' WHEN SR="001" ELSE '0' Y(2)<='1' WHEN SR="

42、010" ELSE '0' Y(3)<='1' WHEN SR="011" ELSE '0' Y(4)<='1' WHEN SR="100" ELSE '0' Y(5)<='1' WHEN SR="101" ELSE '0' Y(6)<='1' WHEN SR="110" ELSE '0' Y(7)<='1' WHEN

43、 SR="111" ELSE '0'END ARCHITECTURE ART3;-使用CASE-WHEN 语句ARCHITECTURE ART4 OF DECODER IS SIGNAL SR: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN SR<=C&B&A; PROCESS(SR)IS BEGIN CASE SR IS WHEN "000"=>Y<= "00000001" WHEN "001"=>Y<= "0000

44、0010" WHEN "010"=>Y<= "00000100" WHEN "011"=>Y<= "00001000" WHEN "100"=>Y<= "00010000" WHEN "101"=>Y<= "00100000" WHEN "110"=>Y<= "01000000" WHEN "111"=>

45、;Y<= "10000000" WHEN OTHERS=>Y<= "00000000" END CASE; END PROCESS;END ARCHITECTURE ART4; 6)带时钟使能的十进制同步计数器。-有时钟使能的十进制同步计数器CNT10.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY CNT10 IS PORT(CLK: IN STD_LOGIC; -计数时钟信号 CLR: IN STD_LOGIC; -清零信号 ENA: IN STD_LOGIC; -计数使能信号

46、 CQ: OUT INTEGER RANGE 0 TO 15; -4位计数结果输出 CO: OUT STD_LOGIC); -计数进位 END ENTITY CNT10;ARCHITECTURE ART OF CNT10 IS SIGNAL CQI: INTEGER RANGE 0 TO 15; BEGIN PROCESS(CLK, CLR, ENA) IS -计数进程 BEGIN IF CLR= '1' THEN CQI<= 0; -计数器异步清零 ELSIF CLK'EVENT AND CLK= '1' THEN IF ENA= '1&

47、#39; THEN IF CQI=9 THEN CQI<=0; -等于9, 则计数器清零 ELSE CQI<=CQI+1; END IF; END IF; END IF; END PROCESS; PROCESS (CLK, CQI) IS -控制进位输出并去毛刺 BEGIN IF CLK'EVENT AND CLK='1' THEN IF CQI=9 THEN CO<= '1' -进位输出 ELSE CO<= '0'END IF; END IF; END PROCESS; CQ<=CQI;END ARCHI

48、TECTURE ART; 7)4选1信号选择器。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX41 IS PORT(X: IN STD_LOGIC_VECTOR(3 DOWNTO 0); A,B: IN STD_LOGIC; Y: OUT STD_LOGIC);END ENTITY MUX41;ARCHITECTURE ART OF MUX41 IS SIGNAL SEL :STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN SEL<=B&A; PROCESS(X,SEL) IS BEGIN IF(SEL

49、="00")THEN Y<=X(0); ELSIF (SEL="01")THEN Y<=X(1); ELSIF (SEL="11")THEN Y<=X(2); ELSE Y<=X(3); END IF; END PROCESS;END ARCHITECTURE ART; 8)4选1数据选择器。-MUXB41.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUXB41 IS PORT(DATA0, DATA1: IN STD_LOGIC_VECTOR(3 D

50、OWNTO 0); DATA2, DATA3: IN STD_LOGIC_VECTOR(3 DOWNTO 0); A, B: IN STD_LOGIC; Y: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY MUXB41;ARCHITECTURE ART OF MUXB41 IS SIGNAL SEL: STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN SEL<=B&A; PROCESS(SEL) BEGIN CASE SEL IS WHEN "00"=>Y<=DATA0; WHEN &

51、quot;01"=>Y<=DATA1; WHEN "10"=>Y<=DATA2; WHEN "11"=>Y<=DATA3; WHEN OTHERS =>Y<=NULL; END CASE; END PROCESS;END ARCHITECTURE ART; 9)D触发器。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DCFQ IS PORT(D, CLK: IN STD_LOGIC; Q: OUT STD_LOGIC);END ENTITY DCF

52、Q;ARCHITECTURE ART OF DCFQ IS BEGIN PROCESS(CLK) IS BEGIN IF (CLK'EVENT AND CLK='1')THEN - 时钟上升沿触发 Q<=D; END IF; END PROCESS;END ARCHITECTURE ART;10)非同步复位/置位的D触发器。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ASYNDCFQ IS PORT(CLK, D, PRESET, CLR: IN STD_LOGIC; Q: OUT STD_LOGIC);END

53、ENTITY ASYNDCFQ;ARCHITECTURE ART OF ASYNDCFQ IS BEGIN PROCESS(CLK, PRESET, CLR) IS BEGIN IF(PRESET='1')THEN-置位信号为1,则触发器被置位 Q<='1' ELSIF(CLR='1')THEN-复位信号为1,则触发器被复位 Q<='0' ELSIF(CLK'EVENT AND CLK='1')THEN Q<=D; END IF; END PROCESS;END ARCHITECTURE

54、ART; 11)同步复位的D触发器。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SYNDCFQ IS PORT(D, CLK, RESET: IN STD_LOGIC; Q: OUT STD_LOGIC);END ENTITY SYNDCFQ;ARCHITECTURE ART OF SYNDCFQ IS BEGIN PROCESS(CLK) IS BEGIN IF(CLK'EVENT AND CLK='1')THEN IF(RESET='0')THEN Q<='0'-时钟边沿到来且

55、有复位信号,触发器被复位 ELSE Q<=D; END IF; END IF; END PROCESS;END ARCHITECTURE ART; 19)JK触发器。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY JKCFQ IS PORT(J, K, CLK: IN STD_LOGIC; Q, QB: BUFFER STD_LOGIC);END ENTITY JKCFQ;ARCHITECTURE ART OF JKCFQ IS SIGNAL Q_S, QB_S: STD_LOGIC; BEGIN PROCESS(CLK, J, K) IS

56、 BEGIN IF (CLK'EVENT AND CLK='1')THEN IF(J='0' AND K='1') THEN Q_S<='0' QB_S<='1' ELSIF (J='1' AND K='0') THEN Q_S<='1' QB_S<='0' ELSIF (J='1' AND K='1') THEN Q_S<=NOT Q_S; QB_S<=NOT QB_S; END IF; END IF ; Q<=Q_S; QB<=QB_S; END PROCESS;END ARCHITECTURE ART; 16) 有时钟使能的十进制计数器的源程序CNT10.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY CNT10 IS PORT(CLK: IN STD_LOGIC; -计数时钟信号 CLR: IN STD_LOGIC; -清零信号 ENA: IN STD_LOGIC; -计数使能信号 CQ: OUT INTEGER RANGE 0 TO 15; -4位计数结果输出 CO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论