|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
各位仁兄:
本人学习FPGA编程不是很久,处于初级入门水平。最近在代码上出现了写问题,不知道怎么解决。望懂得人给予提点:
我想设计一个RAM,这个RAM的功能是存储一副图像,比如256*128的吧那么ram的存储数据量就是32768个,然后只读取这幅图像的偶数行。我使用的是XILINX的simple dual ram 的IP核来实现这个功能,下面是我的代码:
reg [7:0] cntt=8'b0;
reg ena=1'b0;
reg enb=1'b0;
reg enb1=1'b1;
wire addr_last=(addra == 16'd32768)?1'b1:1'b0;
always@(posedge CLK)
begin
if (enable) //enable是上个模块输出的使能信号
begin
addra<= addr_last ? 16'd32768:addra+1;
ena <= addr_last ? 1'b0:1'b1;
end
else
addra<=0;
end
always@(posedge CLK)
begin
if(addra==16'd32768)
begin
if(addrb==16'd32768)
begin
enb1<=1'b0;
enb<=enb1;
end
else
if(cntt==8'd128)
begin
addrb<=addrb+8'd129;
cntt <=1;
enb <=1'b1;
end
else
begin
addrb<=addrb+1;
cntt<=cntt+1;
enb<=1'b1;
end
end
else
enb<=1'b0;
end
fil_ram buffer_ram(
.clka(CLK), // input clka
.ena(ena), // input ena
.wea(1'b1), // input [0 : 0] wea
.addra(addra), // input [15 : 0] addra
.dina(cAp), // input [11 : 0] dina
.clkb(CLK4), // input clkb
.enb(enb), // input enb
.addrb(addrb), // input [15 : 0] addrb
.doutb(DOUT) // output [11 : 0] doutb
);
在modelsim中仿真倒是可以实现一定的功能,但是加入到整个顶层文件中就出现问题了,不知道什么原因。 |
|