...下面的程序解释一下,要详细些。每一行添加注释。先谢谢了_百度...
发布网友
发布时间:2024-04-18 02:18
我来回答
共1个回答
热心网友
时间:2024-04-19 22:48
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;--库,程序包的使用
ENTITYSRAM IS --实体描述(SRAM为实体名)
GENERIC(WIDTH:INTEGER:=8;--类属表(integer是整型,WIDTH为常数名)
DEPTH:INTEGER:=128;--类比上一句即可
ADDER:INTEGER:=3);
PORT(DATAIN:IN STD_LOGIC_VECTOR(7 DOWNTO0);--端口说明,IN为端口类型,输入只读
DATAOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--OUT输出,只写
CLOCK:IN STD_LOGIC;--STD_LOGIC是数据类型,为标准位单值
WE,RE:IN STD_LOGIC;--WE和RE为输入端口,可输入标准位单值
SIGNAL WADD:IN STD_LOGIC_VECTOR(2DOWNTO 0);--标准位位矢量,3个信号元素
SIGNAL RADD:IN STD_LOGIC_VECTOR(2 DOWNTO 0));
ENDENTITY SRAM;--结束实体描述
ARCHITECTUREART OF SRAM IS--结构体描述(ART是结构体名)
TYPE MEM IS ARRAY(0 TO 127) OF STD_LOGIC_VECTOR(7 DOWNTO 0);--元素说明
SIGNAL RAMTMP:MEM;--TYPE数据类型,SIGNAL信号
BEGIN--下面为功能描述
PROCESS(CLOCK)--进程,CLOCK为敏感信号,敏感信号的变化会激活进程
BEGIN
IF (CLOCK'EVENT AND CLOCK='1') THEN--时钟信号上升沿
IF(WE='1')THEN
RAMTMP(CONV_INTEGER(WADD))<=DATAIN; --如果we为1,将DATAIN的值赋给RAMTMP(CONV_INTEGER(WADD))
END IF;
END IF;
ENDPROCESS;
PROCESS(CLOCK)--可类比上一个进程
BEGIN
IF(CLOCK'EVENTAND CLOCK='1')THEN
IF (RE='1') THEN
DATAOUT<=RAMTMP(CONV_INTEGER(RADD));
END IF;
ENDIF;
ENDPROCESS;
ENDARCHITECTURE ART;