verilog 实现rom,仿真输出一直为x。求助..
[复制链接]
写了一个rom,写入数据,为什么仿真的时候输出一直为x啊,有没有大佬帮我看看救命呜呜呜呜呜呜呜呜呜
module rom( rst,clk,o_sine);
input clk;
input rst; //复位信号
output o_sine;
reg [7:0] o_sine; //存储的数据位宽为8位
//parameter INIT_FILE = "../dat/ram_init.dat"reg [7:0] ROM [255:0];
parameter SINE_FILE = "sinABFull256x16Hex.txt"; //正弦波形数据
reg [7:0] sine_rom [255:0]; //存储器的深度为256
reg [7:0] cnt;
integer i;
initial
begin
$readmemh(SINE_FILE, sine_rom);
for(i=0;i<256;i=i+1)
$display("sine_rom[%d]= %h",i,sine_rom[i]);
end
always@(posedge clk,negedge rst)
begin
if(!rst)
begin
o_sine<=8'b0;
cnt<=0;
end
else if(cnt<256)
begin
o_sine<=sine_rom[cnt];
cnt<=cnt+1;
end
else
cnt<=0;
end
endmodule
下面是测试代码
`timescale 1ns / 1ps
module rom_tb( );
reg rst,clk;
wire [7:0] o_sine;
initial
begin
clk=0;
rst=1; //低电平复位信号赋初始值1
#40 rst=0;
#60 rst=1;
end
rom rom_test(.rst(rst),.clk(clk),.o_sine(o_sine));
always #1 clk=~clk; //时钟周期为2ns
endmodule
|