7存储器设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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灯。

相关文档
最新文档