微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 在verilog中怎么描述ROM并赋值?

在verilog中怎么描述ROM并赋值?

时间:10-02 整理:3721RD 点击:
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写的,32位宽,深度16的ROM,并赋值。verilog中怎么写? 多谢!

看看QuartusII中的EDIT--INSERT TEMPLATE. 里面就有。

可以用RAM代替
然后在simulation开始时用$readmemh("init_data.dat", mem);初始化声明的memory

写个always块,类似如下
always @(*)begin
         case(addr)begin
                 00: data<=xxx;
                 01: data<=xxx;
                 10: data<=xxx;
                 11: data<=xxx;
         endcase
end



   你这个是FPGA吧,不是ASIC

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top