我正在尝试弄清楚如何使用我的iCE40HX-8K分支板上的块RAM。我想在512x8配置中访问它,据我从文档中可以看出,它是由项目IceStorm支持的,但我还没能让它像我预期的那样工作。
如果我没有理解错的话,用READ_MODE参数设置为1来初始化SB_RAM40_4K原语应该会将块设置为512x8读取模式,该模式使用9位读取地址,并在每个地址读取8位数据。
这是我能想到的最简单的例子。它设置一个带有一些预初始化存储器的SB_RAM40_4K,并直接读取板载发光二极管的引脚。
hx8kboard.pcf
set_io leds[0] B5
set_io leds[1] B4
set_io leds[2] A2
set_io leds[3] A1
set_io leds[4] C5
set_io leds[5] C4
set_io leds[6] B3
set_io leds[7] C3
set_io clk J3top.v
module top (
output [7:0] leds,
input clk
);
//reg [8:0] raddr = 8'd0;
reg [8:0] raddr = 8'd1;
SB_RAM40_4K #(
.INIT_0(256'h00000000000000000000000000000000000000000000000000000000_44_33_22_11),
.WRITE_MODE(1),
.READ_MODE(1)
) ram40_4k_512x8 (
.RDATA(leds),
.RADDR(raddr),
.RCLK(clk),
.RCLKE(1'b1),
.RE(1'b1),
.WADDR(8'b0),
.WCLK(1'b0),
.WCLKE(1'b0),
.WDATA(8'b0),
.WE(1'b0)
);
endmoduleraddr == 0时LED输出
\|/ \|/
O O O O O O O O raddr == 1时的LED输出
\|/ \|/ \|/ \|/
O O O O O O O O 我认为512x8模式下的地址1应该是随机存取存储器的第二个8位,即8'h22或8'b0010010。相反,我得到的是8'h33或8'b00110011。经过一些实验,这似乎是16位读取的低8位。
我不确定我哪里出错了。任何帮助理解这里发生的事情的人都将不胜感激。谢谢!
https://stackoverflow.com/questions/41499494
复制相似问题