§
This presentation is the property of its rightful owner.
Sponsored Links
1 / 65

基本逻辑电路: 组合逻辑电路、 时序逻辑电路 一 组合逻辑电路设计 简单门电路、编码器、译码器、 加法器、多路选择器、三态门等。 PowerPoint PPT Presentation


  • 139 Views
  • Uploaded on
  • Presentation posted in: General

§ 3.9 基本逻辑电路设计. 基本逻辑电路: 组合逻辑电路、 时序逻辑电路 一 组合逻辑电路设计 简单门电路、编码器、译码器、 加法器、多路选择器、三态门等。. 1 、基本门电路. 2 、编码器 设计一个 8 输入优先级编码器, y0 级别最低, y7 级别最高;输出为 3 位编码。. 方法 1 : 利用 if 多选择语句自顶向下的优先特性. 方法 2 : 进程内为顺序语句,最先描述优先级最低, 最后描述优先级最高,可实现优先级编码。. 方法 3 :利用条件赋值语句

Download Presentation

基本逻辑电路: 组合逻辑电路、 时序逻辑电路 一 组合逻辑电路设计 简单门电路、编码器、译码器、 加法器、多路选择器、三态门等。

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


4551699

§3.9 基本逻辑电路设计

基本逻辑电路:

组合逻辑电路、

时序逻辑电路

一 组合逻辑电路设计

简单门电路、编码器、译码器、

加法器、多路选择器、三态门等。


4551699

1、基本门电路


4551699

2、编码器

设计一个 8 输入优先级编码器,y0 级别最低,

y7 级别最高;输出为3位编码。


4551699

方法1:利用 if 多选择语句自顶向下的优先特性


4551699

方法2:进程内为顺序语句,最先描述优先级最低,

最后描述优先级最高,可实现优先级编码。


4551699

方法3:利用条件赋值语句

architecture behavior of priority is

begin

vec <= “111” when y7 = ‘1’ else

“110” when y6 = ‘1’ else

“101” when y5 = ‘1’ else

“100” when y4 = ‘1’ else

“011” when y3 = ‘1’ else

“010” when y2 = ‘1’ else

“001” when y1 = ‘1’ else

“000” when y0 = ‘1’ else

“XXX”;

end behavior;


4551699

3、译码器

译码器是编码器的逆过程。如 3-8 译码器:


4551699

方法1:使用逻辑左移运算符

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity decoder is

port(inp : in std_logic_vector(2 downto 0);

outp : out std_logic_vector(7 downto 0));

end decoder;

architecture rtl of decoder is

begin

outp<=“00000001” sll(conv_integer(inp));

end rtl;


4551699

方法2:使用process语句

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity decoder is

port(inp : in std_logic_vector(2 downto 0);

outp : out std_logic_vector(7 downto 0));

end decoder;

architecture rtl of decoder is

begin

process(inp)

begin

outp<=(others=>’0’);

outp(conv_integer(inp))<=‘1’;

end process;

end rtl;


4551699

方法3:使用 case 语句实现。


4551699

译码输出低有效


4551699

方法4:使用条件赋值语句


4551699

3-8译码器仿真结果:

译码输出低有效


4551699

4、加法器

带进位的 4位加法器符号如下:

Sum(i) = a(i)  b(i)  cin

C(i+1) = a(i) b(i) +((a(i) + b(i) ) c(i)


4551699

方法1:用for – loop语句实现


4551699

方法2:直接使用加法“+”函数:


4551699

加法器仿真结果:


4551699

5、多路选择器

前面用 if 语句、case 语句、条件赋值语句、选择赋值语句分别描述过4选1选择器。

6、三态门及总线缓冲器

VHDL语言通过指定大写的Z值表示高阻状态

a : std_logic;

a_bus:std_logic_vector(7 downto 0);

指定高阻状态如下:

a <= ‘Z’ ;

a_bus <= “ZZZZZZZZ” ;


4551699

1)三态门电路描述


4551699

三态门仿真结果:


4551699

2)单向总线缓冲器


4551699

3)双向总线缓冲器


4551699

二 时序逻辑电路设计

触发器、寄存器、计数器、分频器、信号发生器等。

一)时序电路特殊信号的描述

时钟信号和复位信号

1、时钟信号描述

常用的描述方式:

1)进程的敏感信号是时钟信号,在进程内

部用if 语句描述时钟的边沿条件。


4551699

如:

process (clock_signal)

begin

if (clock_edge_condition) then

signal_out <= signal_in ;

其它时序语句

end if ;

end process ;


4551699

2)在进程中用wait until语句描述时钟信号,此

时进程将没有敏感信号。

如:

process

begin

wait until (clock_edge_condition);

signal_out <= signal_in ;

其它时序语句

end process ;


4551699

注意:

a.在对时钟边沿说明时,一定要注明是上升沿

还是下降沿。

b.一个进程中只能描述一个时钟信号。

c.wait until 语句只能放在进程的最前面或

最后面。

3)时钟边沿的描述

时钟上升沿:

(clock’event and clock = ‘1’)

时钟下降沿:

(clock’event and clock = ‘0’)


4551699

2、触发器的复位信号描述

1)同步复位:在只有以时钟为敏感信号的进程

中定义。

如:

process (clock_signal)

begin

if (clock_edge_condition) then

if (reset_condition) then

signal_out <= reset_value;

else

signal_out <= signal_in ;

end if ;

end if ;

end process ;


4551699

2)异步复位:进程的敏感信号表中除时钟信

号外,还有复位信号。

如:process (reset_signal, clock_signal)

begin

if (reset_condition) then

signal_out <= reset_value;

elsif (clock_edge_condition) then

signal_out <= signal_in ;

end if ;

end process ;


4551699

二) 常用时序电路设计

1、触发器(Flip_Flop)

1)D触发器


4551699

异步置位/复位D触发器


4551699

同步复位D触发器


4551699

比较:异步置位的锁存器(Latch)


4551699

2)T触发器

library ieee;

use ieee.std_logic_1164.all;

entity t_ff is

port(t, clk : in std_logic;

q : buffer std_logic);

end t_ff;

architecture rtl of t_ff is

begin

process(clk)

begin

if clk’event and clk=‘1’ then

if t=‘1’ then

q<=not q;

else

q<=q;

end if;

end process;

end rtl;

T

Q

Clk

Q


4551699

3)RS触发器

S

Q

library ieee;

use ieee.std_logic_1164.all;

entity rs_ff is

port(r, s, clk : in std_logic;

q, qn : buffer std_logic);

end rs_ff;

architecture rtl of rs_ff is

begin

Clk

Q

R

process(r, s, clk)

begin

if clk’event and clk=‘1’ then

if s = ‘1’ and r = ‘0’ then q<=‘0’; qn<=‘1’;

elsif s=‘0’ and r=‘1’ then q<=‘1’; qn<=‘0’;

elsif s=‘0’ and r=‘0’ then q<=q; qn<=q n;

else null;

end if;

end if;

end process;

end rtl;


4551699

2、寄存器

8位串行输入、串行输出移位寄存器:

z0

z1

z2

z3

z4

z5

z6

z7

z8


4551699

8位移位寄存器描述(结构描述)


4551699

8位移位寄存器直接用信号连接描述


4551699

移位寄存器仿真结果:


4551699

3、计数器

计数器分为:同步计数器

异步计数器

(1)同步计数器

同步计数器指在时钟脉冲(计数脉冲)的控

制下,构成计数器的各触发器状态同时发生变化

的计数器。


4551699

带允许端的十二进制计数器


4551699

可逆计数器(加减计数器)


4551699

可逆计数器仿真结果:


4551699

例:六十进制(分、秒)计数器


4551699

60进制计数器仿真结果:


4551699

(2)异步计数器

异步计数器又称为行波计数器,它的低位计数器的输出作为高位计数器的时钟信号。

异步计数器采用行波计数,使计数延迟增加,计数器工作频率较低。

描述异步计数器与同步计数器的不同主要体现在对各级时钟脉冲的描述上。


4551699

例:由8个触发器构成的行波计数器:


4551699

基本元件 dffr 的描述:


4551699

采用元件例化描述8位行波计数器:


4551699

8 位行波计数器仿真结果:


4551699

4、序列信号发生器、检测器

1)“01111110”序列发生器


4551699

仿真结果:


4551699

2)序列信号检测器,检测“01111110”


4551699

简洁的序列信号检测器:


4551699

三 存储器设计

1、ROM


4551699

2、SRAM


4551699

仿真结果:


4551699

第3章 习题四

1、给触发器复位的方法有哪两种?如果时钟进程

中用了敏感信号表,哪种复位方法要求把复位

信号放在敏感信号表中?

2、设计一个任意 n 分频的分频器。

3、设计一个用于时钟(分、秒)计数的 60进制

的计数器(分个、十位)。

4、设计一个用于时钟(小时)计数的 24进制的

计数器(分个、十位)。

5、给定一个参考晶振频率 f = 1MHz,设计一个

数字电子表。


  • Login