7存储器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三十六ROM
一、实验要求
设计一个256×8的ROM
二、实验内容
在设计ROM时,根据ROM的大小,我们可以采用不同的方法进行设计,比如4×8、8×8或16×8的ROM可以采用数组描述或WHEN-ELSE。然而数组描述ROM在面积上是最有效的,在用数组描述时,常把数组常量描述的ROM放在一个程序包中,这种方法可以提供ROM的重用,在程序包中应当用常量定义ROM的大小。而用WHEN-ELSE描述一个ROM,它却是最直观的,它是类似查表的方式来设计的,如下面的例程就是一个用WHEN-ELSE设计的16×8的ROM。但对于MAXPLUS II这个软件,对于用数组描述的ROM在编译过程中会出错,有可能MAXPLUS II在语法支持上不太全面,但可以用其他的VHDL语言仿真综合工具进行仿真或综合,如ACTIVE VHDL、MODELSIM、LEONARDO等。
对于大型的ROM应当采用例化的方法。对于256×8的ROM,我们就可以采用例化的方法来设计实现。
例程:16×8的ROM
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ROM16_8 is
PORT(
DATAOUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --Data Output
ADDR : IN STD_LOGIC_VECTOR(3 DOWNTO 0); --ADDRESS
CE : IN STD_LOGIC -- Chip Enable
);
END ROM16_8;
ARCHITECTURE a OF ROM16_8 IS
BEGIN
DATAOUT <= "00001001" WHEN ADDR = "0000" AND CE='0' ELSE
"00011010" WHEN ADDR = "0001" AND CE='0' ELSE
"00011011" WHEN ADDR = "0010" AND CE='0' ELSE
"00101100" WHEN ADDR = "0011" AND CE='0' ELSE
"11100000" WHEN ADDR = "0100" AND CE='0' ELSE
"0101"
=
AND CE='0' ELSE
WHEN
ADDR
"11110000"
"00010000" WHEN ADDR = "1001" AND CE='0' ELSE
"00010100" WHEN ADDR = "1010" AND CE='0' ELSE
"00011000" WHEN ADDR = "1011" AND CE='0' ELSE
"00100000" WHEN ADDR = "1100" AND CE='0' ELSE
"00000000";
END a;
16×8ROM 波形仿真图如下图36-1。仿真图中输入的不同的地址对应的不同的输出数据可参见程
序段:
DATAOUT <= "00001001" WHEN ADDR = "0000" AND CE='0' ELSE
"00011010" WHEN ADDR = "0001" AND CE='0' ELSE
"00011011" WHEN ADDR = "0010" AND CE='0' ELSE
"00101100" WHEN ADDR = "0011" AND CE='0' ELSE
"11100000" WHEN ADDR = "0100" AND CE='0' ELSE
"0101"
AND CE='0' ELSE
=
WHEN
"11110000"
ADDR
"00010000" WHEN ADDR = "1001" AND CE='0' ELSE
"00010100" WHEN ADDR = "1010" AND CE='0' ELSE
"00011000" WHEN ADDR = "1011" AND CE='0' ELSE
"00100000" WHEN ADDR = "1100" AND CE='0' ELSE
"00000000";
实验源程序是rom16_8.vhd。
图36-1 16×8 ROM 波形仿真图
256×8 ROM的波形仿真图如下图36-2。实验源程序是rom256_8.vhd。工作时序参见仿真图。不同的地址对应的输出数据表参见文件rom256x8.mif。该实验推荐使用芯片10K系列,7000系列不支持该实验。
图36-2 256×8 ROM波形仿真图
三、实验连线
16×8ROM 实验输入信号有CE(输出允许控制端)、ADDR0~ADDR3(输入地址),输出信号有DATAOUT0~DATAOUT7(8位数据输出),工作时工作时序参见图36-1所示,ce保持低电平, ADDR0~ADDR3接拨码开关, DATAOUT0~DATAOUT7接LED灯。
256×8 ROM实验输入信号有inclock(输入时钟)、address0~address7(输入的8根地址线),输出信号有outlock(输出时钟)、oe(输出允许控制端)、q0~q7(8位数据输出)。工作时输入时钟、输出时钟和oe端可参见图36-2,接数字信号源单元的CLK0~CLK5,输入地址线address0~address7接拨码开关,输出数据线q0~q7接LED灯。