案例11
案例11数据分配器设计
11.1什么是数据分配器?
能够将1个输入数据,根据需要传送到m个输出端的任何一个输出端的电路,叫做数据分配器,又称为多路分配器,其逻辑功能正好与数据选择器相反。
1对4数据分配器真值表
其中,Din为数据输入端,a[1..0]为两位地址码;y0、y1、y2和y3为4个数据通道。
电路符号
考考你:你能熟练使用protel99se绘制电路原理吗?
11.2代码设计
1对4数据分配器,代码如下:
libraryieee;
useieee.std_logic_1164.all;
entitydemux4is
port(din:instd_logic;
a:instd_logic_vector(1downto0);
y0,y1,y2,y3:outstd_logic);
end;
architectureoneofdemux4is
begin
process(din,a)
begin
y0=0;y1=0;y2=0;y3=0;
caseais
when00=y0=din;
when“01”
when10=y2=din;
when11=y3=din;
whenothers=null;
endcase;
endprocess;
end;
路网表图
考考你:你能使用RTL查看器件得到的电路网表图吗?查看网表有何意义?
11.3仿真结果
考考考你:这是功能仿真还是时序仿真?如何判断的?
11.4你有疑问吗?
数据分配器与数据选择器的区别是什么?
数据分配器的功能与数据选择器相反。数据分配器是将一个数据源的数据根据需要送到多个不同的通道上去;数据选择器实现经过选择,把多个通道的数据传到唯一的公共数据通道上去的功能。
案例10
案例10三态门设计
10.1原理
什么是三态门?
三态门是指逻辑门的输出,除有高、低电平两种状态外,还有第3种状态——高阻状态的门电路,高阻态相当于隔断状态。三态门都有一个en控制使能端,用来控制门电路的通/断。
电路符号
考考你:三态门有那些用途?你知道的应用了三态门的中规模集成电路有那些?你能读懂它们的芯片资料(datasheet)吗?
10.2代码设计
代码一
libraryieee;
useieee.std_logic_1164.all;
entitytri_gateis
port(din:instd_logic;
en:instd_logic;
dout:outstd_logic);
end;
architectureoneoftri_gateis
begin
dout=dinwhenen=1elseZ;
end;
代码二
libraryieee;
useieee.std_logic_1164.all;
entitytri_gate_1is
port(din,en:instd_logic;
dout:outstd_logic);
end;
architectureoneoftri_gate_1is
begin
process(din,en)
begin
ifen=1thendout=din;
elsedout=Z;
endif;
endprocess;
end;
10.3考考你
1.如上所示代码一和代码二有什么区别?
2.三态门的时序仿真和功能仿真有什么区别?
3.怎样设置时序仿真和功能仿真?
10.4知识扩展
在FPGA设计中,仿真一般分为功能仿真(前仿真)和时序仿真(后仿真)。
时序仿真和功能仿真最大的区别是在于时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中,时序仿真后的信号加载了时延,而功能仿真没有。
10.5仿真结果
案例9
案例9半减器和全减器设计
9.1原理
在数字系统中,数的加、减、乘、除都是通过加法器来实现的。只考虑两个减数本身的相减,不考虑低位的借位,这样的减法运算称为半减,实现这种运算的逻辑电路称为半减器。(如78-39=49)全减器可对两个两位二进制数进行减法运算,同时产生借位,不仅考虑两个两位二进制数的相减,而且还考虑来自低位借位数相减的运算电路,称为全减器。
如78