[X]关闭

MIG 三缓存 视频缓冲 问题请教 想应用在数据传输

文档创建者:keykay
浏览次数:5272
最后更新:2020-01-20
        always@(posedge ui_clk)
        begin
            rst_tem <= {rst_tem[3:0],rst_n_i};
        end
像复位 和 CH0_FS    CH6_FS 都需要打几个时钟再输出有效信号,是视频缓冲才需要这样的操作打拍使能
还是所有的缓存方案都需要这样的操作。

        //-------------------------写控制信号进入MSG_FIFO--------------------------//
        always@(posedge ui_clk)
        begin
        if(!rst_tem[4])//--ddr校准完成--//   
                begin
                MSG_FIFO_WREN    <=1'd0;
                MSG_FIFO_WRDATA    <=8'd0;
                end
            else
                begin
                MSG_FIFO_WREN    <=
                (
                    ({CH0_FS_r,CH0_FS}==2'b01)||
                    ({CH6_FS_r,CH6_FS}==2'b01)
                );
                MSG_FIFO_WRDATA    <=
                {
                    ({CH0_FS_r,CH0_FS}==2'b01),
                    ({CH6_FS_r,CH6_FS}==2'b01),
                    1'b0,
                    1'b0,
                    1'b0,
                    1'b0,
                    1'b0,
                    1'b0
                };
                end
        end

对于采用32个深度的FIFO 消息队列还不是太明白 ,您能否详细说明一下这方面的操作流程,还有一些变量的含义,全是简写看着真是费劲。

发表评论已发布 2

A1_Vincent

发表于 2020-1-19 18:39:31 | 显示全部楼层

rst_tem <= {rst_tem[3:0],rst_n_i}; ->if(!rst_tem[4])主要是将rst_n_i输入延迟5个时钟周期,可能是为了等待存储单元从复位状态退出(rst_n_i由0变为1)到正常工作的时间间隔(存储单元并不是rst变1后立即就可以正常写入数据)。
({CH0_FS_r,CH0_FS}==2'b01)这一句是捕获FS信号的上升沿,即只在FS信号由0变为1时,值为1(仅有效一个时钟周期,这是用电平作判断条件所不能实现的)。

uisrc

发表于 2020-1-20 15:15:17 来自手机 | 显示全部楼层

通过消息机制可以把下一次写或者下一次读的请求先写入fifo,当当前的数据从ddr搬运完成后,再从fifo取出最新的请求,请求任务根据消息的先后,队列依次处理,这样的构架有利于多个视频在内存的缓冲处理!看不懂程序就多看看,理解别人的思想,为自己所用是编程人员必备技能之一!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则