verilog中怎样创建ROM并赋值?!!!
subtype ROM_WORD is std_logic_vector (31 downto 0);type ROM_TABLE is array (0 to 15) of ROM_WORD;
constant Zero_32 :ROM_WORD := "00000000000000000000000000000000";
constant RomWord13 :ROM_WORD := "000000000000000000000000"& CAP_PTR;
constant RomWord15 :ROM_WORD := MAX_LAT & MIN_GNT & INT_PIN &INT_LINE;
constant ROM: ROM_TABLE := ROM_TABLE'(
ROM_WORD'(DEVICE_ID & VENDOR_ID),
ROM_WORD'(Zero_32),
ROM_WORD'(CLASS_ID & REV_ID),
ROM_WORD'(Zero_32),
ROM_WORD'(BAR0_MAP),
ROM_WORD'(BAR1_MAP),
ROM_WORD'(BAR2_MAP),
ROM_WORD'(BAR3_MAP),
ROM_WORD'(BAR4_MAP),
ROM_WORD'(BAR5_MAP),
ROM_WORD'(Zero_32),
ROM_WORD'(SUBDEVICE_ID & SUBVENDOR_ID,
ROM_WORD'(EBAR_MAP),
ROM_WORD'(RomWord13),
ROM_WORD'(Zero_32),
ROM_WORD'(MAX_LAT & MIN_GNT & INT_PIN &INT_LINE));
以上是VHDL写的,verilog中怎么写?? 用verilog描述一个ROM吗?
always (访问ROM条件)
case(addr)
对应地址:对应数据
endcase
我是这么想的。。看对不对。 reg数据组吧 觉得是该用reg数组,不过初值在另外的文件定义(define)
页:
[1]