定义的数组,如何让他占用memory呀
reg member;always @ (posedge clk)
if(wrn == 1)
begin
case(ab)
3'b000:addr <= db;
3'b001:member] <= db;
endcase
end
always @ (posedge clk)
if(rdn == 1)
begin
case(ab)
3'b000:;
3'b001:data <= member];
endcase
end
全是占用的逻辑资源,memory占用为0 要占Memory就不能用数组,老老实实的用IP不挺好的嘛 我记得我以前用的了一个二位数组,的确编译成memary了 用IP核建个RAM,写到RAM里去 RTFM
另外,请问LZ,当wrn和rdn都为1的时候,怎样的干活? Nuker 发表于 2014-8-22 17:00
RTFM
另外,请问LZ,当wrn和rdn都为1的时候,怎样的干活?
谢谢资料,谢谢提醒 搞个RAM呀
用IP核块状RAM,自己写接口访问,不用白不用 NJ8888 发表于 2014-8-27 22:16
用IP核块状RAM,自己写接口访问,不用白不用
只看到IP核里面有双口RAM和单口RAM,块状RAM是什么呀,以前没怎么接触过,不太懂。{:sweat:} 我记得,如果定义的是2N次方的大小,会自动生成RAM的,不占逻辑,你试下定义成,128,256试下 bad_fpga 发表于 2014-8-29 09:38
我记得,如果定义的是2N次方的大小,会自动生成RAM的,不占逻辑,你试下定义成,128,256试下 ...
我定义为reg member;
以及reg member;
都不行,我想问一下IP中RAM的使用方法,只看到有单口和双口RAM,但是它的读写跟我想要的方式不一样。 本帖最后由 NJ8888 于 2014-8-29 10:09 编辑
bdzhaojing 发表于 2014-8-29 10:03
我定义为reg member;
以及reg member;
都不行,我想问一下IP中RAM的使用方法, ...
所以你要自己写接口啊,不过你占用很少,那可以考虑普通方式实现占用常规RAM NJ8888 发表于 2014-8-29 10:07
所以你要自己写接口啊,不过你占用很少,那可以考虑普通方式实现占用常规RAM ...
恩,那是不是需要先生成一个普通的RAM,然后在自己写接口呢,要怎么样生成一个普通的RAM呀?还有那个普通方式占用常规RAM是什么意思呀 bdzhaojing 发表于 2014-8-29 10:13
恩,那是不是需要先生成一个普通的RAM,然后在自己写接口呢,要怎么样生成一个普通的RAM呀?还有那个普通 ...
你就直接写代码,让综合其自动分配空间,你用的不是FPGA内部块状RAM资源,用的是与代码合用的资源,只要你资源够这样用也没坏处 NJ8888 发表于 2014-8-29 10:39
你就直接写代码,让综合其自动分配空间,你用的不是FPGA内部块状RAM资源,用的是与代码合用的资源,只要你资 ...
reg member;
always @ (posedge clk)
begin
if(wrn == 1&&rdn==0)
case(ab)
3'b000:addr <= db;
3'b001:member] <= db;
endcase
end
always @ (posedge clk)
begin
if(rdn == 1&&wrn==0)
case(ab)
3'b000:;
3'b001:data <= member];
endcase
end
我的代码是这样写的,就是资源不够,才想要让他能综合成memory bit 误入,fpga还没弄过 在定义的时候加上综合约束,例如:
/* synthesis syn_ramstyle="no_rw_check" */;
这样的,你搜索一下吧,自动的使用FPGA的MEM 我把上面的代码换成if else表示的,就综合成memory了 bdzhaojing 发表于 2014-9-1 09:13
我把上面的代码换成if else表示的,就综合成memory了
为什么?是什么原理? jm2011 发表于 2014-9-1 10:14
为什么?是什么原理?
不太清楚,我觉得是不是RAM的时序就是这样的,毕竟if else和case还是有差别的 在QII9.1上我试了在定义的时候加上综合约束,如:
(* ramstyle = "M144K" *)reg MYRAM;
(* ramstyle = "M9K" *)reg MYRAM;
(* ramstyle = "no_rw_check" *)reg MYRAM;
(* ramstyle = "M144K,no_rw_check" *) reg MYRAM;等
但是综合后都不占用memory。
下面是我自己建的generic sram module,使用多年,
altera, xilinx, lattice 相關的 tool 都可以 compile 成 memory。
給你參考
//============================================================================//
// Filename: ramsp.v //
// Module: ramsp //
// Function: //
// Sync single-port simulation and FPGA-synthesizable model //
// //
// Author: Jarod //
// Date: 2005/11/25, //
// //
//============================================================================//
module ramsp_1024x18
(
CLK,
WE,
RD,
AD,
DI,
DO
);
parameter ADDR_BITS = 10;
parameter MEM_SIZE = 1024;
parameter DATA_BITS = 18;
input CLK; // clock
input WE; // write
input RD; // read
input AD; // address
input DI; // data input
output DO; // data output
// behavior model of ram
reg mem;
reg DO;
always @(posedge CLK)
begin
if(WE)
mem <= #1 DI;
DO <= #1 mem;
end
endmodule
在配置选项中可以选择 是综合成寄存器 还是综合成memory可能通过RTL view查看到底是register 还是memory
页:
[1]