北京交通大学电子设计自动化 - 图文

更新时间:2023-09-28 22:09:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

电子设计自动化实验报告

实验1、组合逻辑电路的设计 实验2、时序逻辑电路的设计

实验地点: 电气楼406

班级 自动化1206 姓名 李国杰 学号 12212156 指导教师 刘彪 时间 2014.5.31

实验1、组合逻辑电路的设计

1、 用IF语句设计一个8-3优先编码器。

8-3优先编码器输入信号为din0,din1,din2,din3,din4,din5,din6和din7,输出信号为out2、out1、out0。输入信号中din0的优先级别最低,依次类推,din7的优先级别最高。也就是说若din7输入为0(即为低电平)则无论后续的输入信号怎么样,对应的这种状态一样,如若din7输入为1(即为高电平)则看优先级仅次于din7的din6状态决定,依次类推。因为din0到din7共8中状态,可以用3位二进制编码来表示。8-3优先编码器真值表如下表所示。

方案:编程时用if语句列出所有输入状态及对应输出

源程序: library ieee;

use ieee.std_logic_1164.all; entity coder is

port(din: in std_logic_vector(0 to 7);

output: out std_logic_vector(0 to 2)); end coder;

architecture behav of coder is

begin

process(din) begin

if(din(7)='0')then output <=\ elsif(din(6)='0')then output <=\ elsif(din(5)='0')then output <=\ elsif(din(4)='0')then output <=\ elsif(din(3)='0')then output <=\ elsif(din(2)='0')then output <=\ elsif(din(1)='0')then output <=\ else output<=\ end if;

end process; end behav;

仿真波形:(功能仿真)

小结:这个程序相对比较简单,变量比较少,只需要列出各种结果就可完成。从波形上看,仿真结果与真值表完全对应,说明程序没有错误。

2、 用CASE语句设计一个4-16译码器。

4-16译码器输入信号有4个a,b,c,d,通过这4个信号的不同组合共16种翻译出16位的信号输出。

方案:用case语句列出不同输入对应的输出

源程序: library ieee;

use ieee.std_logic_1164.all; entity decoder_4to16 is port(a,b,c,d:in std_logic;

y:out std_logic_vector(15 downto 0)); end decoder_4to16;

architecture rtl of decoder_4to16 is

signal indata:std_logic_vector(3 downto 0); begin

indata<=d&c&b&a; process(indata) begin

case indata is

when\ when\ when\ when\ when\ when\ when\ when\ when\ when\ when\ when\ when\ when\ when\ when\ when others=>y<=\ end case; end process; end rtl;

仿真波形(功能仿真):

小结:从仿真波形来看,每种输入都对应着不同的输出,并且没有错误。

实验2、时序逻辑电路的设计

设计4位二进制同步加/减法 可逆计数器

输入: clr: 异步清零(高电平有效)

clk: 时钟输入

load: 同步预置使能端(低电平有效) D3~D0: 4位二进制数输入端 updown: 加/减法控制信号 ( ‘1’加 ,‘0’减 )

输出: Q3~Q0: 4位二进制计数输出

CO: 进位输出 BO: 借位输出

本文来源:https://www.bwwdw.com/article/dpjd.html

Top