版主是什么意思?不能用两个SDRAMcontroller吗?那该如何是好啊!!可以用DMA吗 是阿用兩個SDRAM Controller 你的版子上要有兩顆SDRAM才行阿....
想問你一下你的SOPC會用到SDRAM Controller的原因是甚麼可不可以用SRAM or Flash替代?? 回复 22# Steady_Chou
我是DE0 的板子,没有SRAM.
硬体语言写的控制摄像头采集数据在sdram里面缓存,送到VGA输出,然后我要在NIOS里面提取缓存的数据进行处理,最后存储,SOPC里面如果不用SDRAM的话,我不知道该拿什么来存储,或者缓存 数据了 回复 22# Steady_Chou
请问,我用的是DE0的板子,只有一个SDRAM。我用CCD采集的数据放进SDRAM缓存后,又想让NIOS调取SDRAM里面缓存的数据进行处理,之后不得以又得放回SDRAM,最后存储到sd卡。
wire Read_DATA1;
wire Read_DATA2;
wire Read_DATA3; // add by oomusou for RGB16
Sdram_Control_4Portu7 ( //HOST Side
.REF_CLK(CLOCK_50),
.RESET_N(1'b1),
.CLK(sdram_ctrl_clk),
// FIFO Write Side 1
.WR1_DATA({sCCD_R, sCCD_G,sCCD_B}),
.WR1(sCCD_DVAL),
.WR1_ADDR(0),
.WR1_MAX_ADDR(800*480),
.WR1_LENGTH(9'h100),
.WR1_LOAD(!DLY_RST_0),
.WR1_CLK(CCD_PIXCLK),
// FIFO Write Side 2
.WR2_DATA(),
.WR2(),
.WR2_ADDR(),
.WR2_MAX_ADDR(),
.WR2_LENGTH(),
.WR2_LOAD(!DLY_RST_0),
.WR2_CLK(~CCD_PIXCLK),
// FIFO Read Side 1
.RD1_DATA(Read_DATA3),
.RD1(Read),
.RD1_ADDR(0),
.RD1_MAX_ADDR(800*480),
.RD1_LENGTH(9'h100),
.RD1_LOAD(!DLY_RST_0),
.RD1_CLK(~VGA_CTRL_CLK),
// FIFO Read Side 2
.RD2_DATA(),
.RD2(),
.RD2_ADDR(),
.RD2_MAX_ADDR(),
.RD2_LENGTH(),
.RD2_LOAD(!DLY_RST_0),
.RD2_CLK(~VGA_CTRL_CLK),
// SDRAM Side
.SA(DRAM_ADDR),
.BA({DRAM_BA_1,DRAM_BA_0}),
.CS_N(DRAM_CS_N),
.CKE(DRAM_CKE),
.RAS_N(DRAM_RAS_N),
CAS_N(DRAM_CAS_N),
.WE_N(DRAM_WE_N),
.DQ(DRAM_DQ),
.DQM({DRAM_UDQM,DRAM_LDQM})
);
// add by oomusou for RGB16
assign Read_DATA1 = {Read_DATA3, Read_DATA3, 5'h00};
assign Read_DATA2 = {Read_DATA3, 4'h0, Read_DATA3, 5'h00};
参考了无双大大的博客,对2w和2r 进行了修改,这样可以省出空间。那么,一个用来缓存ccd采集的原始数据(w1和r1),另一个用来存储NIOS处理后的数据(w2和r2),这样的做法可以实现吗??
请教了,thank you!!! 那你用什么作为NIos II处理器的存储空间呢? 回复 4# Steady_Chou
Steady_Chou版主有Write Port*2 & Read Port*3的SDRAM的Source Code吗?有的话发一份给我借鉴一下,感激不尽。邮箱:huguo.yang@163.com 想好好研究下。 太感谢了,刚好用到 这个贴说的比较清楚 受益匪浅~ 回复 16# laoxizi
你的问题解决了吗?我也不明白,请教一下。 回复 6# Steady_Chou
Sdram_Control_4Port u6 (
// HOST Side
.REF_CLK(CLOCK_50),
.RESET_N(1'b1),
// FIFO Write Side 1
.WR1_DATA({sCCD_G, sCCD_B}),
.WR1(sCCD_DVAL),
.WR1_ADDR(0),
.WR1_MAX_ADDR(320*256),
.WR1_LENGTH(9'h100),
.WR1_LOAD(!DLY_RST_0),
.WR1_CLK(CCD_PIXCLK),
// FIFO Write Side 2
.WR2_DATA({sCCD_G, sCCD_R}),
.WR2(sCCD_DVAL),
.WR2_ADDR(22'h100000),
.WR2_MAX_ADDR(22'h100000+320*256),
.WR2_LENGTH(9'h100),
.WR2_LOAD(!DLY_RST_0),
.WR2_CLK(CCD_PIXCLK),
// FIFO Read Side 1
.RD1_DATA(Read_DATA1),
.RD1(Read),
.RD1_ADDR(320*8),
.RD1_MAX_ADDR(320*248),
.RD1_LENGTH(9'h100),
.RD1_LOAD(!DLY_RST_0),
.RD1_CLK(CLK_18),
// FIFO Read Side 2
.RD2_DATA(Read_DATA2),
.RD2(Read),
.RD2_ADDR(22'h100000+320*8),
.RD2_MAX_ADDR(22'h100000+320*248),
.RD2_LENGTH(9'h100),
.RD2_LOAD(!DLY_RST_0),
.RD2_CLK(CLK_18),
// SDRAM Side
.SA(DRAM_ADDR),
.BA({DRAM_BA_1,DRAM_BA_0}),
.CS_N(DRAM_CS_N),
.CKE(DRAM_CKE),
.RAS_N(DRAM_RAS_N),
.CAS_N(DRAM_CAS_N),
.WE_N(DRAM_WE_N),
.DQ(DRAM_DQ),
.DQM({DRAM_UDQM,DRAM_LDQM}),
.SDR_CLK(DRAM_CLK)
);
还要请教一下版主,为什么写的地址和读的地址不是对应的呢?这个例程的功能不就是把CCD的图像显示到VGA显示器上吗?那么应该从CCD写进去的地址开始读啊。为什么会这样写呢?
还有一个要请教版主的就是:
.RD2_DATA(Read_DATA2),
.RD2(Read),
.RD2_ADDR(22'h100000+320*8),
.RD2_MAX_ADDR(22'h100000+320*248),
.RD2_LENGTH(9'h100),
.RD2_LOAD(!DLY_RST_0),
.RD2_CLK(CLK_18),
这里面的RD2_LENGTH是起到什么作用呢。是说明FIFO里面要存储多少数据吗? 正在研究DE2_70_TV,看到sdram这个部分有很多都不懂,这个帖子讲得挺清楚的,获益匪浅啊! Sdram_Control_4Port的端口有两个read 两个write,是不是意味着可以有两个video模块分别操作sdram,把数据在两个数据空间里 回复 10# lengyuye020202
版主,我发现把 rWR1_LENGTH <= 128;
rRD1_LENGTH <= 128;
rWR2_LENGTH <= 128;
rRD2_LENGTH <= 128;
128改成640也行,没有影响,到底是怎么回事。我用PAL摄像头,改成640主要考虑的是一行为640像素 你好
想請問WR1_ADDR 是WR1的起始位置
WR1_MAX_ADDR是結束位子
那假如想要對sdram做指定位址的存取要怎寫??
就是從指定的ADDRESS取值
但在CONTRLLER裡卻都沒有看到輸入位址的地方
謝謝 添加端口需要注意的问题是什么呢?
页:
1
[2]