逻辑设计中关于延时n拍的设计方法
来源:互联网 发布:淘宝夏季新款女装 编辑:程序博客网 时间:2024/05/11 03:40
引言:在像素领域处理hsync,vsync,active,以及rgb888并行数据。因为Display Monitor Timing标准,控制信号(hsync/vsync/active)以及数据rgb888之间存在着某种特定的关系,其关系大体如下图所示:
图1 : Hsync Vsync Active 与像素之间的关系
在实际使用的过程中,像素数据需要经过buffer来缓存,逻辑设计经常使用FIFO做数据缓存,而FIFO对像素数据是有延迟的。为了达到hsync vsync与像素数据的同步,并不适合将控制信号也通过FIFO,合适的方法是将控制信号延时固定的时钟节拍,就需要有控制延时N(N>=1)个时钟节拍的逻辑控制。
下面就介绍一些关于固定时钟节拍的延时RTL实现。
方法一:触发器
当N<=2的,适合用D触发器做时钟节拍延时,这样最简便,也节省相应的逻辑资源。
input d,output q,input clk,input rst_nreg q_t;always @ (posedge clk or negedge rst_n)beginif(!rst_n)q_t <= 1'b0;elseq_t <= d;endassign q = q_t;
其所对应的RTL Schematic为:
每一个D触发器,就在相应的时钟沿延时相应的时钟节拍。
方法二:移位寄存器
此方法本质上也是使用触发器来实现的,下面的HDL代码实现N=3的时钟节拍延时
input d;output q;input clk;input rst_n;parameter n = 3;reg [n-1:0] q_t;always @ (posedge clk or negedge rst_n)beginif(!rst_n)q_t <= 0;elseq_t <= {q_t[n-2:0],d};endassign q = q_t[n-1];
其所对应的RTL Schematic为:
根据建立的testbench,得到的延迟波形图:
方法三:for循环
下面的HDL代码是实现N=8的时钟延迟,请注意代码中的n为8
input d,output q,input clk,input rst_nparameter n = 8;reg [n-1:0] d_t;reg q_t;integer i;always @ (posedge clk or negedge rst_n)begin if(!rst_n) begin d_t <= 0; q_t <= 1'b0; end else begin d_t[0] <= d; for(i=1;i<=n-1;i=i+1) d_t[i] <= d_t[i-1]; q_t <= d_t[n-1]; endendassign q = q_t;
其所对应的RTL Schematic为:
仿真时序图:
这种方法可以明显地看出,所使用的寄存器相比前两种方法要少。
方法四:双端口RAM
方法五:FIFO
当所需要的延时时钟节拍比较多的时候,推荐使用这里两种方法。
阅读全文
1 0
- 逻辑设计中关于延时n拍的设计方法
- 关于Qt中常用的延时方法--自我总结
- 关于 android 中 postDelayed方法的讲解,作用:延时调用。
- 内核延时的N种方法(转)
- 内核延时的N种方法
- 逻辑设计方法学【1】 -- 常用设计技术
- 逻辑设计中多时钟设计【1】
- 逻辑设计中多时钟设计【2】
- 数据库的概念设计与逻辑设计
- 关于FPGA逻辑设计的21个小贴士
- 硬件逻辑设计方法的教学思考
- 关于JQ JS的延时方法笔记
- 逻辑设计方法学【4】 --复位信号设计方法
- 关于TableView中图片的延时加载
- 关于TableView中图片的延时加载
- 关于TableView中图片的延时加载
- 关于TableView中图片的延时加载
- 关于TableView中图片的延时加载
- SQL基础
- mysql通过拷贝数据文件的方式进行数据库迁移
- 627. Swap Salary
- jquery多文件上传,获取每个文件大小
- vue 点击传参 页面跳转
- 逻辑设计中关于延时n拍的设计方法
- Spring MVC 教程,快速入门,深入分析
- Django中Cookie和Session状态保持系列之十一
- HashMap的工作原理
- 原生js图片轮番代码
- js SelectAll全选按钮
- easyui树编辑单个td及添加以后进入编辑
- php 分页
- 转:设置Android app的字体不随系统全局字体大小的变动而变动