EDA综合实验设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Beijing Jiaotong University EDA实验设计报告
指导老师:刘彪
学院:电子信息工程学院姓名:黄家维
学号:13213012
班级:电子1301
实验地点:电气楼406
实验日期:2014年5月29日星期四
实验一熟悉QuartusII软件的安装及使用(4学时)
我们通过下载及安装,可在电脑上运行Altera Quartus II。

打开软件,新建一个工程,在工程底下新建一个VHDL File,即可实现编程功能。

编完程序后点击Start Compilation可试运行程序,待编写的程序运行无误后,再在此工程下新建一个Vector Waveform File,给程序中的输入变量赋值,保存后点击Start Simulation即可实现程序的仿真。

实验二、组合逻辑电路的设计
实验方案设计、实验方法、
1.实验方案
8-3优先编码器的VHDL描述有多种方法,设计过程中可以根据真值表采用case…when语句、with…select语句、if…then结构等多种手段实现,也可以根据真值表分析输入输出间的逻辑关系,根据逻辑关系写出其布尔表达式,根据布尔代数式调用基本逻辑门元件实现8-3优先编码器。

本实验中根据真值表用if-then结构实现8-3优先编码器
2.实验方法
首先根据前文所述,对照真值表的列出的不同输入逻辑状态,分情况依次输出于输入的对应关
系,而后编译综合,由开发系统自行实现电路功能。

实验步骤
1.设计输入利用FILE\New菜单输入VHDL
源程序,创建源文件
2.设计项目的创建
1)原文件存储…..
2)利用FILE\Project\Set Project…
3.设计编译….
4.器件选择及管脚分配…..
5.设计仿真…..
6.时序分析…..
7.编程下载(可选)….
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ENCODER IS
PORT(
D:IN STD_LOGIC_VECTOR(0 TO 7);
A:OUT STD_LOGIC_VECTOR(0 TO 2)
);
END ;
ARCHITECTURE XIANI OF ENCODER IS BEGIN
PROCESS(D)
BEGIN
IF (D(7)='0')THEN A<="111";
ELSIF (D(6)='0')THEN A<="110";
ELSIF (D(5)='0')THEN A<="101";
ELSIF (D(4)='0')THEN A<="100";
ELSIF (D(3)='0')THEN A<="011";
ELSIF (D(2)='0')THEN A<="010";
ELSIF (D(1)='0')THEN A<="001";
ELSIF (D(0)='0')THEN A<="000";
ELSE A<="ZZZ";
END IF;
END PROCESS;
END;
1用CASE语句设计一个4-16译码器。

设计思路:
通过case语句可实现使能端的控制及4-16译码器的功能,即输入一个四位二进制数,即可使输出的16个端口中相应的端口电平发生变化。

用case语句来实现译码器中相应数值选择的功能恰到好处。

程序:
其中实体名为SB2,when "0000"=> outt(15
downto 0)<="1111111111111110"等语句即可实现从0011译码到第4位输出发生变化。

具体程序如下:
library ieee;
use ieee.std_logic_1164.all;
entity SB2 is
port(inn:in std_logic_vector(3 downto 0);
shi:in std_logic;
outt:out std_logic_vector(15 downto 0));
end entity SB2;
architecture sb of SB2 is
begin
process(inn,shi)
begin
if shi='1' then
case inn is
when "0000"=> outt(15 downto 0)<="1111111111111110";
when "0001"=> outt(15 downto 0)<="1111111111111101";
when "0010"=> outt(15 downto 0)<="1111111111111011";
when "0011"=> outt(15 downto 0)<="1111111111110111";
when "0100"=> outt(15 downto 0)<="1111111111101111";
when "0101"=> outt(15 downto 0)<="1111111111011111";
when "0110"=> outt(15 downto
0)<="1111111110111111";
when "0111"=> outt(15 downto 0)<="1111111101111111";
when "1000"=> outt(15 downto 0)<="1111111011111111";
when "1001"=> outt(15 downto 0)<="1111110111111111";
when "1010"=> outt(15 downto 0)<="1111101111111111";
when "1011"=> outt(15 downto 0)<="1111011111111111";
when "1100"=> outt(15 downto 0)<="1110111111111111";
when "1101"=> outt(15 downto 0)<="1101111111111111";
when "1110"=> outt(15 downto 0)<="1011111111111111";
when "1111"=> outt(15 downto 0)<="0111111111111111";
when others =>outt(15 downto 0)<="1111111111111111";
end case;
end if;
end process;
end architecture;
仿真波形:
当输入inn为0000时,输出outt中的第16个端口变为低电平,即实现了译码的功能。

实际仿真波形如下图。

实验3:时序电路设计
设计4位二进制同步加/减法可逆计数器,其中 输入:
clr: 异步清零(高电平有效)
clk: 时钟输入
d3-d0: 4位二进制数输入端updown:加/减法控制信号(‘1’加,‘0’减)
输出:
q3-q0: 4位二进制计数输出
co: 进位输出
bo: 借位输出
设计思路:
用if语句实现清零及加减法的选择。

若选择updown=1,则当时钟输入为高电平时输入的d 就加1,当d=1111时进位输出co就变1,最后将d中的数送给q来输出,以达到4位二进制同步加/减法可逆计数器的设计。

程序:
其中实体名为
CTRDIV16,程序中两个关键的if语句即可实现加减法的控制及进位、借位的输出。

具体程序如下:
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity CTRDIV16 is
port(clk:in STD_LOGIC;
updown:in STD_LOGIC;
clr:in STD_LOGIC;
q:out STD_LOGIC_VECTOR (3 downto 0);
co,bo:out std_logic);
end CTRDIV16;
architecture sbb of CTRDIV16 is signal d:std_logic_vector(3 downto 0); begin
process(clk,clr,updown)
begin
if clr='1' then
d<="0000";
elsif clk'event and clk='1' then
if updown='1' then
d<=d+'1';
co<='0';
bo<='0';
else
d<=d-'1';
co<='0';
bo<='0';
end if;
if d="1111" and updown='1' then co<='1';
bo<='0';
end if;
if d="0000" and updown='0' then bo<='1';
co<='0';
end if;
end if;
end process;
process(d)
begin
q<=d;
end process;
end sbb;
仿真波形:
若选取updown=1(加法),通过波形即可看出,该程序已经实现了d的加法运算,同时在d=1111时,进位输出co跳转一次,即有一个进位。

若选取updown=0(减法),该程序也实现了d的减法运算,同时在d=0000是,借位输出bo跳转一次,即有一个借位输出。

具体仿真波形如下。

updown=1(加法)
updown=0(减法)
实验感想:
quartusII 可以模拟硬件设计,即为硬件程序烧写模拟软件,操作简单,易于运行。

它让我熟练了实际硬件的使用语言和逻辑顺序,并能实现
一些简单硬件的程序编制和模拟仿真,使我对VHDL和EDA有了更加具体而深刻的认识,我认为这次实验设计对使我获益匪浅,一定会为我以后的学习生活带来不少的益处。

相关文档
最新文档