数字系统的设计与实验
实验报告
Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】
数字系统的设计与实验学院:
专业:
班级:
学号:
姓名
指导老师
2013 年12月 10 日
实验一原码反码发生器
一实验目的:
1、掌握组合逻辑电路的基本设计方法。
2、学习波形仿真的方法。
3、加深对最简单的二进制原码、反码的理解,灵活运用基本的逻辑门。
二实验内容
1、设计的电路应具备以下功能:
A.包含如下端口:
一个选择信号端口,一个8位二进制输入端口,一个原码/反码输出端口。
B. 选择信号的逻辑状态为0时输出原码;逻辑状态为1时输出反码。
2、完成电路设计。
3、对设计的正确性进行验证。
三实验要求
1、列出所要实现的功能的真值表。
2、画出电路的逻辑图。
3、编写用VHDL语言描述的源程序。
library ieee;
use shiyan1 is
port (cin : in std_logic_vector(7 downto 0);
fin : in std_logic;
cout: out std_logic_vector(7 downto 0));
end shiyan1;
architecture behave of shiyan1 is
begin
process(fin)
begin
case fin is
when '1' => cout <= not cin;
when '0' => cout <= cin;
when others => null;
end case;
end process;
end behave;
4、在MAX 软件平台上完成编译和功能仿真。
一、信号端口为0时
二、信号端口为1
总结:经过上个实验后,对maxplu件有了一定了解,对于 VHDL也更加熟悉,首先构造真值表,画出逻辑电路图,然后编写程序生成仿真波形图。
在编写程序的时候也出现了一些错误,比如是将单个字符用双引号,结果编译通不过。
老是报错。
后来才检查出来。
实验二4舍5入电路
一实验目的:
1、掌握组合逻辑电路的基本设计方法。
2、熟练运用真值表。
二实验内容
1、设计的电路应具备以下功能:
A.包含如下端口:
一个4位二进制输入端口,一个进位输出端口。
B. 即当输入的数X大于或等于5时,进位输出端口输出F为1,反之,输出为0。
2、完成电路设计。
3、对设计的正确性进行验证。
三实验要求
1、编写用VHDL语言描述的源程序。
library ieee;
use shiyan2 is
port (cin : in std_logic_vector(3 downto 0);
f : out std_logic);
end shiyan2;
architecture behave2 of shiyan2 is
begin
process(cin)
begin
case cin is
when "0000" => f <= '0';
when "0001" => f <= '0';
when "0010" => f <= '0';
when "0011" => f <= '0';
when "0100" => f <= '0';
when "0101" => f <= '1';
when "0110" => f <= '1';
when "0111" => f <= '1';
when "1000" => f <= '1';
when "1001" => f <= '1';
when others => null;
end case;
end process;
end behave2;
2、在MAX 软件平台上完成编译和功能仿真。
电路逻辑图如下:
仿真结果如下:
总结:根据提示中的真值表确定输入输出接口,编写程序实现仿真,便得到了以上的波形图,首先很容易知道,当输入的数大于等于5时就要进位,二F输出端便代表的是进位,因此F的取值只有0和1
实验三四—十六译码器
一实验目的:
1、掌握组合逻辑电路的基本设计方法。
2、熟练运用VHDL语言的顺序语句和并发语句。
3、熟练运用MAX软件提供的仿真功能。
二实验内容
1、设计的电路应具备以下功能:
A.包含如下端口:
一个使能信号输入端口,四个选择信号输入端口,十六个驱动信号输出端口。
B.当使能信号为高电平时,对于四个选择信号组成的任意一组状态,十六个驱动信号中有一个且仅有一个有效的高电平输出。
当使能信号为低电平时,十六个驱动信号全部输出低电平。
2、完成电路设计。
3、对设计的正确性进行验证。
三实验要求
1、编写用VHDL语言描述的源程序
library ieee;
use shiyan3 is
port (G : in std_logic;
A : in std_logic_vector(3 downto 0);
Y : out std_logic_vector(15 downto 0));
end shiyan3;
architecture behave3 of shiyan3 is
begin
process(G, A)
begin
for i in 0 to 15 loop
Y(i) <= '0';
end loop;
if(G='1') then
case A is
when "0000" => Y(0) <= '1';
when "0001" => Y(1) <= '1';
when "0010" => Y(2) <= '1';
when "0011" => Y(3) <= '1';
when "0100" => Y(4) <= '1';
when "0101" => Y(5) <= '1';
when "0110" => Y(6) <= '1';
when "0111" => Y(7) <= '1';
when "1000" => Y(8) <= '1';
when "1001" => Y(9) <= '1';
when "1010" => Y(10) <= '1';
when "1011" => Y(11) <= '1';
when "1100" => Y(12) <= '1';
when "1101" => Y(13) <= '1';
when "1110" => Y(14) <= '1';
when "1111" => Y(15) <= '1';
when others => null;
end case;
else
for i in 0 to 15 loop
Y(i) <= '0';
end loop;
end if;
end process;
end behave3;
2、在MAX 软件平台上完成编译和功能仿真。
电路逻辑图如下:
仿真效果如下:
总结:我是参照三八译码器来设计的,先构造真值表,然后编写程序,程序在编译的时候遇到了特别多的错误,不过经过调试也成功的生成了正确的波形图。
加深了对VHDl的了解,和对maxplus的认识。