《硬件设计与调试》实验

by 曾经沧海
313 阅读

实验指导书

===========================
验一、3-8译码器的设计

library ieee; 
use ieee.std_logic_1164.all 
entity decoder38 is 
port(a: in std_logic_vector(2 down to 0)
en: in std_logic 
y: out std_logic_vector(7 down to 0);
end decoder38; 
architecture a of decoder38 is
signal sel: std_logic_vector(3 down to 0);
begin 
sel(0)<=en;
sel(1)<=a(0);
sel(2)<=a(1); 
sel(3)<=a(2); 
with sel select 
y<="00000001"when"0001", 
y<="00000010"when"0011", 
y<="00000100"when"0101", 
y<="00001000"when"0111", 
y<="00010000"when"1001", 
y<="00100000"when"1011", 
y<="01000000"when"1101", 
y<="10000000"when"1111", 
y<="11111111"when others; 
end a;
===============================================
综合实验
验一、3-8译码器的设计
1、了解MAX+
2、复习VHDL语言的基础知 

1、掌握组合逻
2、掌握组合逻辑电路的静态测试方法
3、初步掌握MAX+plusⅡ软件的基本操作
4、初步了解可编程器件的设计全过程。 

译码器是将
一个4位的BCD码转换成7个码输出,以便在7段显示器上显示这个十进制数。译码
器有N个二进制选择线,那么最多可译码转换成2N个数据。当一个译码器有N条输入线和M
条输出线时,则称为N×M的译码器。本实验要求实现3×8译码器。 
分别使用图
仿真验证自己设计的电路,最后做出实验报告。 
1、设计输入 
(1)图形编辑 
打开MAX+plus 

(2)文本编辑 

打开MAX+p
,保存文件,扩展名为.vhd。 
参考程序代码(decoder38.vhd) 
library ieee; 
use ieee.std_log 
entity decoder38 is 
port(a: in std_logi
en: in std_logic 
y: out std_logic_v
r38; 
architecture a of 
signal sel: std_logic_vect 
begin 
sel 
sel(1)<=a(0);
sel(2)<=a(1); 
sel(3)<=a(2); 
with sel select 
y<=“00000001”
y<=“00000010”when“0011”, 
y<=“00000100”when“0101”, 
y<=“00001000”when“0111”, 
y<=“00010000”when“1001”, 
y<=“00100000”when“1011”, 
y<=“01000000”when“1101”, 
y<=“10000000”when“1111”, 
y<=“11111111”when others; 
选Assign/D
,选File/Project/Save & Compile 菜单,编译设计文件。 
选Ma
es from SNF菜单将输入和输出端口调入,然后再编辑)。选Max+plus2/Simulator 菜单
进行行为仿真。 
观察仿
六 
写出设计思想及
能及定义,验证文档与调试结果,最后写出结论及心得体会。 

实验二、RS触发器的设计 
1、熟悉MAX+
2、复习VHDL语言的基础知
3、复习数字电路中RS触发器的工 

1、掌握时序逻
2、了解VHDL数据流描述和行为描述
3、进一步掌握MAX+plusⅡ软件的基本操作与
4、进一步了解可编程器件的设计全过程。 

RS触发器 
使用数据流
方法在MAX+plusⅡ中设计RS触发器,并通过波形仿真验证自己设计的电路,最后做
出实验报告。 
1、设计输入 
打开MAX
保存文件,扩展名为.vhd。 
参考程序代码如下(rsff1.vhd 
library ieee; 
use ieee.std_logi
use ieee.std_logic_arith.all; 
use ieee.std_logic_unsigned.all; 
entity rsff1 is 
port(s,r: 
q, not_q: out std_logic

; 
architecture a 
signal qn,not_qn: std_logi
begin 
qn 
not_qn <=s nor qn; 
q <=qn; 
not_q <= not_qn;
end a; 
library ieee; 
use ieee.std_logi
entity rsff is 
port(s,r:
q, qb: out std_logic);
ff; 
architecture a 
signal q1,qb1:std_logic;
begin 
proce 
begin 
if(s=’1 
q1<=’0’ ; 
qb1<=’1’ ; 
elseif(s=’0’and 
q1<=’1’ ; 
qb1<=’0’ ; 
else 
q1< 
qb1<=qb1; 
end if; 
end process; 
q<=q1; 
qb<=qb1;
end a; 
选Assign/D
,选File/Project/Save & Compile 菜单,编译设计文件。 
选Ma
es from SNF菜单将输入和输出端口调入,然后再编辑)。选Max+plus2/Simulator 菜单

进行行为仿真。 
观察仿
六 
写出设计思想及
能及定义,验证文档与调试结果,最后写出结论及心得体会。 
1、熟悉MAX+
2、复习VHDL语言的基础知
3、思考分频电路的工作原理。 

1、掌握分频电
2、进一步掌握VHDL描述方法。
3、进一步掌握MAX+plusⅡ软件的
4、进一步了解可编程器件的设计全过程。 

在实际应用
时钟频率,采用低频率时钟信号的设备如果使用高频率的时钟往往出现错误或者不稳定
的情况,如键盘扫描容易出错,数码管会闪烁等情况。所以常常需要用到分频电路。分频电
路包括一个时钟输入(Clkin),一个时钟输出(Clkout)。使用一个中间变量Counter信号,
Counter信号从0开始,每当第N个上升沿到来时,Counter信号变为0,同时时钟输出(Clkout)
翻转一次,以此达到分频目的。 
使用VHD
,最后做出实验报告。 
1、设计输入 
打开MAX
保存文件,扩展名为.vhd。 
参考程序代码如下(frediv.vh 
library ieee; 
use ieee.std_lo
entity frediv is 
port(clkin: i
clkout: out std_logic); 

ediv; 
architecture a 
constant n:integer:=3; 
signal counter:integer ran 
signal clk:std_logic; 
gin 

begin 
if ri 
if counter=n then –每计到
counter<=0; 
clk<=not clk; 
else 
count 
end if; 
end if; 
end process; 
clkout<=clk; 
end a; 
选Assign/D
,选File/Project/Save & Compile 菜单,编译设计文件。 
选Ma
es from SNF菜单将输入和输出端口调入,然后再编辑)。选Max+plus2/Simulator 菜单
进行行为仿真。 
4、下载 
观察仿
六 
写出设计思想及
能及定义,验证文档与调试结果,最后写出结论及心得体会。 
1、熟悉MAX+
2、复习VHDL语言的基础知
3、思考可逆计数器的设
计思想和工 

1、掌握可逆计

2、进一步掌握VHDL描述方法。 
3、进一步掌握MAX+plusⅡ软件的
4、进一步了解可编程器件的设计全过程。 

计数器在实
号(dir),以及二进制输出向量(q)对输入时钟信号进行计数,当控制信号dir为0时,
计数器进行加计数,计数值不断增加,反之,当控制信号dir为1时,计数器进行减计数,
计数值不断减少。 
使用VHD
电路,最后做出实验报告。 
1、设计输入 
打开MAX
保存文件,扩展名为.vhd。 
参考程序代码如下(bi3cnt.vh 
library ieee; 
use ieee.std_log
use ieee.std_logic_arith.all; 
use ieee.std_logic_unsigned.all; 
entity bi3cnt is 
port(clk,dir
q : out std_logic_vec 
architecture a 
signal qn:std_logic_vect 
begin 
pro 
begin 
if clk 
if dir=’0’then 
qn<=qn+1; 
else 
qn<=qn- 
end if; 
end if; 
end process; 
q=qn; 
end a; 
2、

选Assign/D
,选File/Project/Save & Compile 菜单,编译设计文件。 
选Ma
es from SNF菜单将输入和输出端口调入,然后再编辑)。选Max+plus2/Simulator 菜单
进行行为仿真。 
4、下载 
观察仿
六 
写出设计思想及
能及定义,验证文档与调试结果,最后写出结论及心得体会。

发表评论