(最新整理)EDA技术及应用(第2版)朱正伟复习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA技术及应用(第2版)朱正伟复习资料
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(EDA技术及应用(第2版)朱正伟复习资料)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为EDA技术及应用(第2版)朱正伟复习资料的全部内容。
第一章
1、EDA的定义:以计算机为工作平台,以EDA软件工具为开发环境,以硬件描述语言为设计语言,以ASIC为实现载体的电子产品自动化设计过程。
2、EDA的三大特征:硬件描述语言、系统级仿真、综合技术
3、EDA的设计方法:自上而下
4、EDA的核心:利用计算机完成电路设计的全程自动化
5、常用的EDA工具及其作用:
设计编辑器:一般支持图形输入,HDL文本输入,波形图输入等
仿真器:完成行为模型的表达、电子系统的建模、逻辑电路的验证以及门级系统的测试
HDL综合器:将软件描述与给定的硬件结构用某种网表文件的方式对应起来,成为相互的映射关系。
适配器:将由综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件,
下载器:在功能仿真与时序仿真正确的前提下,将设计下载到对应的实际器件中,实现硬件设计
6、EDA的设计流程:设计输入(将设计的系统或电路按照EDA开发软件要求的文本方式或图形方式表示出来,并送入计算机的过程。
)
→综合(由高层次描述自动转换为低层次描述的过程,是EDA技术的核心。
)
→适配(将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作.)→仿真(功能仿真:对逻辑功能进行模拟测试,看是否符合设计及要求;时序仿真:包含硬件特性参数,仿真精度高)→目标器件的编程下载(将编程数据发放到具体的可编程器件中去)→硬件测试(FPGA或CPLD直接用于应用系统的检测中)
第二章
1、PLD的基本结构:输入缓冲器、与阵列、或阵列、输出缓冲器;电路的核心是由门电路构成的与阵列、或阵列,逻辑函数靠它们实现.
与阵列产生乘积项,或阵列产生乘积项之和。
2、PLD的分类:
简单PLD:
PROM:与门阵列固定,或门阵列可编程。
优点:价格低、易编程性能可预测。
不足:规模大、速度低、功耗高。
PLA:与阵列和或阵列均可编程。
特点使用灵活,运行速度慢,价格高,缺少高质量的支持软件,使用不广泛。
PAL:与阵列可编程,或阵列固定,即乘积项可若干,数目固定。
特点:性能速度较高。
有几种固定的输出结构,不同结构对应不同的型号。
GAL;即通用阵列逻辑器件,与阵列和PAL的类似,或阵列及输出寄存器则采用OLMC输出逻辑宏单元OLMC最多有8个或项,每个或项最多有32个与项.
复杂PLD:
(1)CPLD-———-复杂可编程逻辑器件
(2)FPGA——-——现场可编程门阵列
(3)ISP—-—-—在系统可编程逻辑器件
3、PLD的互联结构:(1)确定型:除FPGA外的PLD器件布线每次相同。
(2)统计型:FPGA每次布线模式不同,设计者提出约束模式。
4、PLD相对于MCU的优势:运行速度、复位、程序“跑飞"
5、CPLD/FPGA的优势:高速性、高可靠性、编程方式、标准化设计语言
6、常用的可编程逻辑器件: CPLD和FPGA
7、CPLD 的结构:可编程逻辑功能块(FB);可编程I/O单元;可编程内部连线.
CPLD最基本的单元是宏单元,由逻辑阵列、乘积项选择矩阵和可编程触发器组成.
8、FPGA器件的内部结构为逻辑单元阵列(LCA)包括:可编程输入/输出模块、核心阵列是可编程逻辑块、可编程内部连线
9、FPGA的分类:(1)查找表型FPGA的可编程逻辑块(CLB)是查找表,由查找表构成函数发生器,通过查找表实现逻辑函数,查找表的物理结构是静态存储器(SRAM)。
查找表本质上是一个RAM
大部分FPGA都是基于SRAM工艺的,而SRAM工艺的芯片在掉电后信息就会丢失,一定需要外加一片专用配置芯片
(2)多路开关型FPGA的可编程逻辑块(CLB)是可配置的多路开关。
(3)多路与非门型结构FPGA的结构是基于一个与—或-异或逻辑块。
10、可编程逻辑器件的测试技术:(1)内部逻辑测试(2)JTAG边界扫描
边界扫描的引脚功能:TDI-—测试数据输入;TDO——测试数据输出;TMS——测试模式选择;TCK——测试时钟输入;TRST——测试复位输入
11、指令寄存器。
用来决定是否进行测试或访问数据寄存器操作。
旁路寄存器。
这个l位寄存器用来提供TDI和TDO的最小串行通道。
边界扫描寄存器。
由器件引脚上的所有边界扫描单元构成。
12、CPLD/FPGA的编程与配置
1)基于电可擦除存储单元的EEPROM或Flash技术。
CPLD一般使用此技术进行编程。
2)基于SRAM查找表的编程单元。
对该类器件,编程信息是保存在SRAM中的,SRAM在掉电后编程信息立即丢失,在下次上电后,还需要重新载入编程信息.因此该类器件的编程一般称为配置。
大部分FPGA采用该种编程工艺。
3)基于一次性可编程反熔丝编程单元
对于基于SRAM LUT结构的FPGA器件,由于是易失性器件使之需要在上电后必须进行一次配置,需要一个加载过程。
13、FPGA的配置方式:(1)FPGA专用配置器件
(2)使用单片机配置FPGA
(3)使用CPLD配置FPGA
14、FPGA和CPLD在开发应用上的选择:如果设计中使用到大量触发器,例如设计一个复杂的时序逻辑,那么使用FPGA就是一个很好选择。
同时PLD拥有上电即可工作的特性,而大部分FPGA需要一个加载过程,所以,如果系统要可编程逻辑器件上电就要工作,那么就应该选择PLD。
要嵌入cpu核或者DSP模块,选择FPGA。
编程:在逻辑设计时可以在没有设计具体电路时,就把CPLD/FPGA焊接在印制电路板上,然后在设计调试时可以一次又一次地改变整个电路的硬件逻辑关系,而不必改变电路板的结构.
配置:在掉电后编程信息立即失效,在下次上电后,还需要重新载入编程信息,此类编程成为配置。
第三章
1、原理图输入设计方法的编辑规则:
1)引脚名称:不区分大小写,第一个字符必须为英文,以后可用下划线、数字等组合下划线前后要有字母或数字“/"“—”“%”都是非法的
2)节点名称:显示为一条细线,命名规则与引脚名称相同
3)总线名称:显示一条粗线,代表很多节点的组合。
名称后加[m.。
n] ,m,n 均为正数,大小不规定。
如address[0..7]
4)文件名称:任何字符,<32字符,扩展名为。
bdf。
仿真波形文件的扩展名为。
vwf。
元件符号图文件的扩展名为。
sym
5)项目名称 :项目内相同程序的不同类型文件,名称相同,扩展名不同;功能不同的可用不同文件名,但项目名称必须与最高层的电路设计文件名称相同。
2、原理图底层电路设计:原理图由若干个元件组合而成,当有些元件是多个简单元件的组合电路时,为了精确仿真组合元件的特性,必须单独设计组合元件的原理图设计,这种设计称为底层电路设计.
3、原理图顶层电路设计:当所有的底层元件多设计完毕并生成包装好的单一元件后,再设计一个总原理图,把所有的底层元件调出来,进行导线连接、仿真、编程下载,这种设计称为顶层电路设计.
4、分层设计的好处:
增强设计的可读性,避免在设计中出现大量复杂的组合逻辑影响检查和测试效率
有利于进行模块复制,需要复制的电路模块可以先封装成底层元件,再在顶层设计中重复调用5、分层设计的要点
在底层文件设计完成后执行File|Create Default Symbol 命令并编译(quartus II自动完成)
在顶层文件中,调用底层设计时
顶层文件不能与底层文件名字相同
6、用Quartus II图形编辑方式生成的图形文件的扩展名为。
gdf或。
bdf.
建立工程目录的需注意:文件的路径不能包含汉字,不能用空格
保存的文件名不要和库文件名相同,如and2、7402等等
7、设置仿真终止时间的意义:规定何时终止施加输入向量。
8、设置仿真栅格单位的意义:规定每个栅格的最小时间单位,时间值显示在每个栅格竖线的上方。
仿真栅格单位是设置时钟周期的最小单位,即时钟周期最小等于栅格单位,最大等于栅格单位的倍数。
9、在波形文件存盘操中,系统自动将波形文件名设置设计文件名同名,但文件类型是。
vwf。
锁定引脚后还需要对设计文件重新编译,产生设计电路的下载文件(。
sof)。
10、分配引线端子后一定要重新编译;同理,对原理图做任何修改后,也一定要重新编译
11、quartus II中各种类型文件后缀名:工程名.qpf 原理图.bdf 波形仿真文件。
vwf VHDL源文件.vhd 底层文件生成的符号文件。
bsf 下载文件 .pof for cpld .sof for fpga
第四章
1、什么是VHDL:V ery high speed integrated H ardware D escription L anguage (VHDL)-—超高速集成电路VHSIC)硬件描述语言
2、常用硬件描述语言:常用硬件描述语言有VHDL、Verilog和ABEL语言。
对比:(1)逻辑描述层次:层次由高到低依次可分为行为级、RTL级和门电路级;VHDL语言是一种高级描述语言,适用于行为级和RTL级的描述,最适于描述电路的行为;Verilog语言和ABEL 语言是一种较低级的描述语言,适用于RTL级和门电路级的描述,最适于描述门级电路。
(2)设计要求:VHDL进行电子系统设计时可以不了解电路的结构细节,设计者所做的工作较少;Verilog和ABEL语言进行电子系统设计时需了解电路的结构细节,设计者需做大量的工作。
(3) 综合过程:VHDL语言源程序的综合通常要经过行为级→RTL级→门电路级的转化,而Verilog 语言和ABEL语言源程序的综合经过RTL级→门电路级的转化。
(4) 对综合器的要求:VHDL描述语言层次较高,不易控制底层电路,因而对综合器的性能要求较高,Verilog和ABEL对综合器的性能要求较低.
3、VHDL的特点:
VHDL主要用于描述数字系统的结构、行为、功能和接口。
(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力.
(2) VHDL具有丰富的仿真语句和库函数.
(3)用VHDL完成一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动把VHDL描述设计转变成门级网表。
(4) VHDL对设计的描述具有相对独立性。
(5) 由于VHDL具有类属描述语句和子程序调用等功能.
(6) VHDL的生命周期长,移植性好。
4、VHDL程序设计约定:
语句结构描述中方括号“[ ]”内的内容为可选内容。
程序文字的大小写是不加区分的。
程序中的注释使用双横线“—-”。
层次缩进格式:同一层次的对齐,低层次的较高层次的缩进两个字符.
各个源程序文件的命名均与其实体名一致。
保存的位置一定不能放在根目录下。
5、VHDL的基本结构:
注意:实体名实际上是器件名,最好用相应功能来确定,如counter4b,adder8b。
注意不能用prim等库的元件
注意:
In 信号只能被引用,不能被赋值
out 信号只能被赋值,不能被引用
buffer 信号可以被引用,也可以被赋值
简单地说
〈= 或 : = In端口
out端口 <= 或: =
buffer端口 <= 或 : = buffer端口
6、结构体(ARCHITECTURE)
结构体(ARCHITECTURE)是设计实体的一个重要部分,结构体将具体实现一个实体。
每一个实体都有一个或一个以上的结构体,每个结构体对应着实体不同结构和算法实现方案,其间
的各个结构体的地位是同等的,它们完整地实现了实体的行为.
实体与结构体的关系:
一个设计实体可有多个结构体,代表实体的多种实现方式。
各个结构体的地位相同。
注:实体名必须是所在设计实体的名字,而结构体名可以由设计者自己选择,但当一个实体具有多个结构体时,同一实体的结构体不能同名。
7、功能描述语句结构
功能描述语句结构可以含有五种不同类型的、以并行方式工作的语句结构。
各语句结构的基本组成和功能分别是:
(1)块语句是由一系列并行执行语句构成的组合体.
(2) 进程语句定义顺序语句模块.
(3)信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋值。
(4)子程序调用语句用于调用一个已设计好的子程序.
(5)元件例化语句对其他的设计实体作元件调用说明。
8、CASE语句:表达真值表
CASE<表达式〉IS
WHEN<选择值或标识符>=〈顺序语句〉;…
…
END CASE;
9、元件例化语句
COMPONENT 元件名
PORT(端口名表);
END COMPONENT;
10、并置操作符:“ & "
11、BUFFER并非是一种特殊的硬件端口结构,只是一种功能描述,作为内部输出信号可以反馈
到实体内部。
第五章
1、信号与变量的区别:信号最后一次赋值才有效
library ieee;
use ieee。
std_logic_1164。
all;
use ieee.std_logic_unsigned。
all;
entity tvs is
port( a,b,c : in std_logic_vector( 3 downto 0);
x,y : out std_logic_vector(3 downto 0)); end tvs;
architecture tvs_arch of tvs is
signal d : std_logic_vector(3 downto 0);
begin
process(a,b,c)
begin
d<=a;
x〈=b+d;
d<=c;
y〈=b+d;
end process;
运行结果为: x=b+c; y= b+c;
process (a,b,c)
variable d: std_logic_vector(3 downto 0);
begin
d :=a;
x <=b+d;
d :=c;
y <=b+d;
end process;
运行结果为: x = b+a; y = b+c;
2、逻辑运算:
SIGNAL a ,b,c : STD_LOGIC_VECTOR (3 DOWNTO 0) ;
SIGNAL d,e,f,g : STD_LOGIC_VECTOR (1 DOWNTO 0);
SIGNAL h,i,j,k : STD_LOGIC ;
SIGNAL l,m,n,o,p : BOOLEAN ;。
.
a<=b AND c; —-b、c相与后向a赋值
d〈=e OR f OR g ; --两个操作符or相同,不需要加括号
h〈=(i NAND j)NAND k ; --NAND不属于AND,OR,NOR之中的一种,必须加括号
l<=(m XOR n)AND(o XOR p); ——操作符不同,必须加括号
h〈=i AND j AND k ; ——操作符相同,不必加括号
h<=i AND j OR k ; --操作符不同,未加括号,表达错误
a〈=b AND e ; --b,e的位矢长度不一致,表达错误
h<=i OR l ; ... ——不同数据类型不能相互作用,表达错误3、VHDL顺序语句:
顺序语句(Sequential Staements)和并行语句(Concurrent Statements)是VHDL程序设
计中两大基本描述语句系列.
顺序语句是相对于并行语句而言的,其特点是每一条顺序语句的执行(指仿真执行)顺序是与它们的书写顺序基本一致的。
顺序语句只能出现在进程(Process )和子程序中。
在VHDL 中,一个进程是由一系列顺序语句构成的,而进程本身属并行语句,在同一设计实体中,所有的进程是并行执行的。
然而任一给定的时刻内,在每一个进程内,只能执行一条顺序语句。
VHDL 有如下六类基本顺序语句:赋值语句;转向控制语句;等待语句;子程序调用语句;返回语句;空操作语句。
4、IF 语句: (1) IF 条件 THEN 语句 END IF ; (2) IF 条件 THEN
语句
ELSE
语句
END IF;
CASE 语句
CASE 表达式 IS
WHEN 值1=〉 语句A ;
WHEN 值2=〉 语句B;。
WHEN OTHERS=〉 语句C ;
END CASE
(3) IF 条件1THEN
语句 ELSIF 条件2THEN
语句 ……
ELSE 语句
END IF ;
FOR 循环
FOR 循环语句的一般形式为:
[循环标号:] FOR 循环变量 IN 循环次数范围 LOOP
顺序处理语句
END LOOP[循环标号];
6、VHDL 并行语句:
其执行方式与书写的顺序无关。
在执行中,并行语句之间可以有信息往来,也可以是互为独立、互不相关、异步运行的。
每一并行语句内部的语句运行方式可以有2种不同的方式,即并行执行方式(如块语句)和顺序执行方式(如进程语句)。
并行语句主要有7种:
● 进程语句(PROCESS STATEMENTS );
● 块语句(BLOCK STATEMENTS);
● 并行信号赋值语句(CONCURRENT SIGNAL ASSIGNMENTS );
● 条件信号赋值语句(SELECTED SIGNAL ASSIGNMENTS);
● 元件例化语句(COMPONENT INSTANTIATIONS);
● 生成语句(GENERATE STATEMENTS );
● 并行过程调用语句(CONCURRENT PROCEDURE CALLS )。
7、 进程语句【例5-11】--8位奇偶校验电路LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164。
ALL;ENTITY p_check IS PORT (a: IN
BEGIN
PROCESS(a )
BEGIN
tmp 〈=’0';
FOR n IN 0 TO 7 LOOP
-—FOR 循环语句Y=0Y=1
PROCESS 语句格式
[进程标号:]PROCESS [(敏感信号参数表)][IS ]
[进程说明部分]
BEGIN
顺序描述语句
END PROCESS [进程标号];
PROCESS 语句的组成
PROCESS 语句结构是由3个部分组成的,即进程说明部分、顺序描述语句部分和敏感信号参数表.
(1) 进程说明部分主要定义一些局部量,可包括数据类型、常数、属性、子程序等。
但需注意,在进程说明部分中不允许定义信号和共享变量。
(2) 顺序描述语句部分可分为赋值语句、进程启动语句、子程序调用语句、顺序描述语句和进程跳出语句等.
(3) 敏感信号参数表需列出用于启动本进程可读入的信号名(当有WAIT 语句时例外). 敏感信号表的特点:
(1)、同步进程的敏感信号表中只有时钟信号.
(2)、异步进程敏感信号表中除时钟信号外,还有其它信号.
(3)、如果有 wait 语句,则不允许有敏感信号表。
8、画出下面程序的信号图:ENTITY mul IS 进程语句有如下特点:
(1)可以和其它进程语句同时执行,并可以存取结构体和实体中所定义的信号;
(2)进程中的所有语句都按照顺序执行;
(3)为启动进程,在进程中必须包含一个敏感信号表或WAIT 语句;
(4)进程之间的通信是通过信号量来实现的。
IF(SELX='0')THEN
temp 〈=a;
ELSE temp 〈=b ;
PORT(a,b,c,selx,sely:IN BIT;
data_out:OUT BIT);
END mul;
ARCHITECTURE ex OF mul IS
SIGNAL temp:BIT;
BEGIN
p_a:PROCESS(a,b,selx)
BEGIN
并行信号赋值语句:
1、简单信号赋值语句:信号赋值目标<=表达式;
2、条件信号赋值语句:赋值目标<=表达式1 WHEN 赋值条件1 ELSE
表达式2 WHEN 赋值条件2 ELSE
.。
.
表达式n;
3、选择信号赋值语句:WITH 选择表达式 SELECT
赋值目标信号<= 表达式1 WHEN 选择值1,
表达式2 WHEN 选择值2,
。
.。
表达式n WHEN 选择值n;
注意:
•选择信号赋值语句本身不能在进程中应用,但其功能却与进程中的CASE语句的功能相
似。
•选择信号语句中也有敏感量,即关键词WITH旁的选择表达式。
•选择信号赋值语句不允许有条件重叠现象,也不允许存在条件涵盖不全的情况,为了防止这种情况出现,可以在语句的最后加上“表达式WHEN OTHERS”子句。
•另外,选择信号赋值语句的每个子句是以“,"号结束的,只有最后一个子句才是以“;”
号结束。
用case语句实现下面程序功能:
•LIBRARY IEEE;
•USE IEEE.STD_LOGIC_1164.ALL;
•USE IEEE.STD_LOGIC_UNSIGNED.ALL;
•ENTITY decoder IS
• PORT(a,b,c:IN STD_LOGIC;
• data1,data2:IN STD_LOGIC;
• dataout:OUT STD_LOGIC);
•END decoder;
•ARCHITECTURE concunt OF decoder IS
• SIGNAL instruction: STD_LOGIC_VECTOR(2 DOWNTO 0);
•BEGIN
•instruction〈=c&b&a;
• WITH instruction SELECT
• dataout<=data1 AND data2 WHEN ”000",
• data1 OR data2 WHEN "001”,
• data1 NAND data2 WHEN ”010",
• data1 NOR data2 WHEN "011”,
• data1 XOR data2 WHEN "100”,
• data1 XNOR data2 WHEN ”101”,
• 'Z’ WHEN OTHERS;
•END concunt;
原件例化语句:
包含元件定义和元件例化两部分:
(1)COMPONENT语句可以在结构体(ARCHITECTURE)、程序包(PACKAGE)和块(BLOCK)的
说明中使用;GENERIC用于该元件的可变参数的代入和赋值;PORT则说明该元件的输入输出端口的信号规定;
(2)COMPONENT语句分为“元件定义”和“元件例化”两部分;“元件定义”完成元件的
“封装”,“元件例化”完成电路板上的元件“插座"的定义,“例化名"(标号名)相当于“插座名”是不可缺少的。
(3)(信号,…)部分完成“元件"引脚与“插座"引脚的连接--“关联"
元件声明:对所调用的较低层次的实体模块(元件)的名称、类属参数、端口类型、数据类型的声明.
语法:component 元件名 [is]
[generic (类属声明);]
[port (端口声明);]
end component [元件名];
元件的例化:把低层元件安装(调用)到当前层次设计实体内部的过程。
端口映射方式:名称关联方式、位置关联方式
例题:
4位移位寄存器——元件例化语句
ENTITY shifter IS
PORT(din,clk:IN BIT; BEGIN
d(0)〈=din; —-并行信号赋值
分析以下程序,用原理图的方法代替该程序。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ND2 IS
PORT(A,B:IN STD_LOGIC;
C:OUT STD_LOGIC);
END ND2;
ARCHITECTURE ARTND2 OF ND2 IS
BEGIN
Y<=A NAND B;
END ARCHITECTURE ARTND2;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164。
ALL;ENTITY ORD41 IS
PORT(A1,B1,C1,D1:IN STD_LOGIC; Z1:OUT STD_LOGIC);END ORD41;
ARCHITECTURE ARTORD41 OF ORD41 IS
COMPONENT ND2
PORT(A,B:IN STD_LOGIC;
C:OUT STD_LOGIC);
END COMPONENT;
SIGNAL X,Y :STD_LOGIC;
BEGIN
U1:ND2 PORT MAP (A1,B1,X); —-位置关联方式U2:ND2 PORT MAP (A=>C1,C=>Y,B=〉D1);—-名字关联方式
U3:ND2 PORT MAP (X,Y,C=〉Z1); —-混合关联方式END ARCHITECTURE ARTORD41;
用VHDL语言编写的,所以其源程序也需要以。
vhd文件类型保存1
VHDL描述风格
1、行为描述
2、数据流描述
3、结构描述
看书上例题5-41——5-43理解这三种描述风格
作业:
1、写出三输入与非门的实体描述
ENTITY NAND IS
PORT(a,b,c:IN BIT;
Data_out:OUT BIT);
END ENTITY NAND;
2、设计一个4位数值比较器
library ieee;
use ieee.std_logic_1164。
all;
entity comparator4bit is
port(A,B:in std_logic_vector(3 downto 0);
Y: out std_logic_vector(1 to 3));
end comparator4bit;
architecture bj of comparator4bit is
begin
process (A,B)
begin
if A〉B then
Y<=”100";
elsif A=B then
Y<="010”;
else
Y〈=”001";
end if;
end process;
end bj;
3、1位全加器的设计:书上例题5—41-—5-43
4、105页用其它语句描述:
PROCESS(a,b,s)
BEGIN
IF s='0’ THEN
q〈=a;
ELSE
q〈=b;
END IF;
END PROCESS;
4、4选一数据选择器
library ieee;
use ieee。
std_logic_1164。
all;
entity mux4 is
port(D:in std_logic_vector(3 downto 0);
A:in std_logic_vector(1 downto 0);
s:in bit;
Y:out std_logic);
end mux4;
architecture behave of mux4 is
begin
process(A,D,s)
begin
if s=’0' then
case a is
when "00” =〉 Y 〈= D(0);
when "10” => Y <= D(1);
when "01” =〉 Y <= D(2);
when others => Y <= D(3);
end case;
else
Y 〈= ’0';
end if;
end process;
end behave;
5、将5-25中的选择信号赋值改为case语句实现
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED。
ALL;
ENTITY decoder IS
PORT(a,b,c:IN STD_LOGIC;
data1,data2:OUT STD_LOGIC
dataout:OUT STD_LOGIC);
END ENTITY decoder;
ARCHITECTURE concunt OF decoder IS
SIGNAL instruction:STD_LOGIC_VOCTOR(2 downto 0) BEGIN
CASE instruction IS
WHEN"000”=>dataout〈=data1 AND data2;
WHEN”001”=〉ataout<=data1 OR data2;
WHEN”010"=〉ataout<= data1 NAND data2;
WHEN”011”=〉dataout〈=data1 NOR data2;
WHEN”100”=〉dataout〈=data1 XOR data2; HHEN”101"=>dataout〈=data1 XNOR<=data2 WHEN OTHERS=>dataout<=’Z’;
ND CASE;
NDPROCESS;
END concunt;。