guolh 发表于 2011-2-21 21:31:23

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中怎么写??

zhangxin0804 发表于 2011-2-22 13:18:33

用verilog描述一个ROM吗?


   always (访问ROM条件)
    case(addr)
      对应地址:对应数据
    endcase

我是这么想的。。看对不对。

ssaweee 发表于 2011-2-22 14:53:04

reg数据组吧

guolh 发表于 2011-2-22 21:27:37

觉得是该用reg数组,不过初值在另外的文件定义(define)
页: [1]
查看完整版本: verilog中怎样创建ROM并赋值?!!!