|
回复 2# Pocahontas
请帮我分析分析,谢谢了
.WR1_DATA({sCCD_R[11:7], sCCD_G[11:6], sCCD_B[11:7]}),//16位
.WR1(sCCD_DVAL),
.WR1_ADDR(0),
.WR1_MAX_ADDR(480*340),
.WR1_LENGTH(9'h100),
.WR1_LOAD(!DLY_RST_0),
.WR1_CLK(CCD_PIXCLK),
// FIFO Write S2
.WR2_DATA({sCCD_R[11:7], sCCD_G[11:6], sCCD_B[11:7]}),//将write1再写入write2
.WR2(sCCD_DVAL),
.WR2_ADDR(22'h100000),
.WR2_MAX_ADDR(22'h100000+480*340),
.WR2_LENGTH(9'h100),
.WR2_LOAD(!DLY_RST_0),
.WR2_CLK(~CCD_PIXCLK),
// FIFO Read Side 1
.RD1_DATA(Read_DATA3),//送往vga显示输出
.RD1(Read),
.RD1_ADDR(0),
.RD1_MAX_ADDR(480*340),
.RD1_LENGTH(9'h100),
.RD1_LOAD(!DLY_RST_0),
.RD1_CLK(~VGA_CTRL_CLK),
// FIFO Read Side 2
RD2_DATA(GPIO0_D[15:0]), //送往GPIO0数据给NIOS处理
.RD2(GPIO0_D[18]),//NIOS控制。是否发送数据给NIOS
.RD2_ADDR(22'h100000),
.RD2_MAX_ADDR(22'h100000+480*340),
.RD2_LENGTH(9'h100),
.RD2_LOAD(!DLY_RST_0),
.RD2_CLK(GPIO0_D[31]),//NIOS控制的时钟
write1的内容送vga显示,write2的内容送NIOS处理
我将write1的内容再写入到write2,之后从write2读出数据送NIOS处理,rgb数据打包为bmp图片存储起来
问题是:
1.最后显示的bmp图片是彩色的,跟雪花一样。送往显示屏的是好的。NIOS算法这边的程序是正确的,问题就出在发送数据这边。
2.当我按下暂停键时候write2里面的数据不变了,这个时候数据发送出去,出现雪花难道是发送数据的地址没有+1吗?发送的全是地址开始处的16位数据?
3.如果每发送一次地址+1,那么我用nios产生时钟,时钟到达则从write2里面发送一次16位数据给nios。这样的话write2里面的数据就会全部送往NIOS,那么为什么还要出现雪花呢?
4.我这样认为的:按下暂停键,write2里面的内容就不变了(vga显示的图像也暂停了),这个时候NIOS控制时钟,时钟下降沿到达则发送一次.RD2_DATA(GPIO0_D[15:0])数据,然后将数据填入到数组里面,接着第二次循环等等,直到数组填满,这样NIOS就全部拿到了采集的vga数据打包为bmp
5.我的这种想法对吗?特别是地址+1这个地方,是自动+1,还是得我来控制+1呢? |
|