Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
$readmem是否可以在Verilog中合成?_Verilog_Synthesis - Fatal编程技术网

$readmem是否可以在Verilog中合成?

$readmem是否可以在Verilog中合成?,verilog,synthesis,Verilog,Synthesis,我正在尝试在FPGA上实现一个微控制器,我需要为它的程序提供一个ROM。如果我使用$readmemb,它会正确地合成为ROM吗?如果不是,标准方法是什么?这取决于合成工具$readmemb是否可合成 Altera的指南包括示例10-31(第10-38页),该示例演示了从$readmemb推断出的ROM(复制如下): 模块双端口只读存储器( 输入[(地址宽度-1):0]地址a,地址b, 输入时钟, 输出寄存器[(数据宽度-1):0]q\u a,q\u b ); 参数数据_宽度=8; 参数addr_

我正在尝试在FPGA上实现一个微控制器,我需要为它的程序提供一个ROM。如果我使用$readmemb,它会正确地合成为ROM吗?如果不是,标准方法是什么?

这取决于合成工具
$readmemb
是否可合成

Altera的指南包括示例10-31(第10-38页),该示例演示了从
$readmemb
推断出的ROM(复制如下):

模块双端口只读存储器(
输入[(地址宽度-1):0]地址a,地址b,
输入时钟,
输出寄存器[(数据宽度-1):0]q\u a,q\u b
);
参数数据_宽度=8;
参数addr_width=8;
reg[data_width-1:0]rom[2**addr_width-1:0];
初始//读取文件中的内存内容
//双端口rom初始化.txt。
开始
$readmemb(“双端口rom初始化.txt”,rom);
结束
始终@(posedge clk)
开始
q_a
module dual_port_rom (
   input [(addr_width-1):0] addr_a, addr_b,
   input clk, 
   output reg [(data_width-1):0] q_a, q_b
);
   parameter data_width = 8;
   parameter addr_width = 8;
   reg [data_width-1:0] rom[2**addr_width-1:0];
   initial // Read the memory contents in the file
           // dual_port_rom_init.txt. 
   begin
      $readmemb("dual_port_rom_init.txt", rom);
   end
   always @ (posedge clk)
   begin
      q_a <= rom[addr_a];
      q_b <= rom[addr_b];
   end
endmodule