地址译码器
FPGA/CPLD实验报告
实验题目:班 级:姓 名:学 号:
地址译码器 控制研-12
一、实验名称:地址译码器
二、实验内容:用VHDL 语言实现地址译码器。 三、实验设计:
1. 打开Quartus II软件,先新建一个VHDL File文件。
2. 输入源程序,点击保存,文件名要与实体名一样,本实验的实体名为dizhiyima 。 3. 保存完后,对文件进行编译。
4. 编译通过后,选择File 里的Create/Update选项里的Create Symbol Files For Current File,此时Quartus II软件自动生成数码管扫描电路的硬件电路图。
5. 新建一个Block Diagram/Schematic File文件。双击空白处,会自动出现Project 文件,文件下面会出现名为dizhiyima 的器件,选择并点击OK 。
6. 连接上输入输出,保存,并编译此文件。
7. 在菜单栏中的Processing 里选择Simulator Tool,然后在Simulator mode里选择Functional 后,点击Generate Functional Simulation Netlist,进行编译。编译完后再新建一个V ector Waveform File文件,点击空白处,选择Note Finder ,在Filter 里选择Pins :all, 再点击list ,把所有引脚导入。然后选择个输入引脚的时钟信号。保存。
8. 保存完后,在菜单栏中的Processing 里选择Simulator Tool,点击Start ,进行仿真,最后输出波形,验证正确性。如不正确,改正错误后,重新进行仿真设计,直到排除错误。
四、实验源程序及原理图:
library ieee;
use ieee.std_logic_1164.all; entity dizhiyima is port(
asbar : in std_logic;
address : in std_logic_vector(19 downto 0);
csbar : out std_logic_vector(3 downto 0) );
end entity dizhiyima;
architecture v1 of dizhiyima is begin
csbar(0)
((asbar = '0') and
((address >= X"00000") and (address
csbar(1)
((asbar = '0') and
((address >= X"40000") and (address
((asbar = '0') and
((address >= X"08000") and (address
((asbar = '0') and
((address >= X"E0000") and (address
else '1'; end architecture v1;
else '1';
硬件连接图如下:
五、实验分析及总结:
asbar=1时,不管address 输入为何值,csbar 输出全为零,故asbar 为低电平时输出有效。
asbar=0时:
当address 输入为00000H~01FC7,01CC4H~01CC5,时,csbar 输出为1110;
address 输入为40500H~4115DH,42D84H~42D85,43310H~43358H,43070H~40F0A,40822H~40828H,40040H~43407H时,csbar 输出为1101;
address 输入为080B0H~083A6H,08C84H~08CE8H, 09650H~06258H,0AE08H~0AE0AH,0A1CCH~0A1DDH,时csbar 输出为1011;
address 输入为E010CH ~E01A0H时csbar 输出为0111。
该地址译码器实现的是当address 输入为00000~01FFF时,译码器csbar 输出1110;
address 输入为40000~43FFF时,译码器csbar 输出1101,address 输入为08000~0AFFF时,译码器csbar 输出1011;
address 输入为E0000~E01FF时,译码器csbar 输出0111,从而实现选址功能。