静态展示网站多少钱,如何建设班级网站首页,wordpress删除时间,百度推广怎么收费在verilog的ISP处理流程中#xff0c;在完成第一个模块的过程中#xff0c;我经常感到困惑#xff0c;到底是延时了多少个时钟#xff1f;今日对这几个进行分类理解。
目录
1.输入信号激励源描述
1.1将数据延时[9]个clk
1.2将vtdc与hzdc延时[9]个clk(等价于单bit的数据… 在verilog的ISP处理流程中在完成第一个模块的过程中我经常感到困惑到底是延时了多少个时钟今日对这几个进行分类理解。
目录
1.输入信号激励源描述
1.1将数据延时[9]个clk
1.2将vtdc与hzdc延时[9]个clk(等价于单bit的数据延时clk)
1.3将vtdc延时2个hzdc长度
2.总结 1.输入信号激励源描述 分为水平信号r_vtdc与垂直信号r_hzdcr_data为传输过来的数据接下来对该信号分类进行延时。 输入 -----------------------------------------------------------------------输入always (posedge pi_pxck)beginr_vtdc pi_darkvtdc ;r_hzdc pi_darkhzdc ;r_data pi_darkcpa ;end
1.1将数据延时[9]个clk 分析对数据做延时时钟个数大小需要建立相应的数组每来1个clk将数组里i存储上的数据传给第i1个从而达到延时时钟个数大小的时钟。但往往设置的数组大小会偏大几个跟其中的非阻塞赋值有关。
-----------------------------------------------------------------数据延时时钟个数 integer i ;//循环reg [p_mtgrcpwd - 1 : 0] shift_reg[0:9] ; //缓存数组reg [p_mtgrcpwd - 1 : 0] r_declk {(p_mtgrcpwd){1d0}} ; //延时时钟个数输出的数据 --------------------------------------------------------------------数组初始化为0 initial beginfor ( i 0; i 10; i i 1) beginshift_reg[i] {p_mtgrcpwd{1b0}};endend ----------------------------------------------------------------数据延时时钟个数always(posedge pi_pxck)beginbeginshift_reg[0] r_data; // 将新值移入寄存器endfor ( i 0; i 9; i i1) beginshift_reg[i1] shift_reg[i];endr_declk shift_reg[9];end 带来延时的几处地方有
(1)shift_reg[0] r_data; r_data非阻塞赋值传给shift_reg[0]延时1个时钟。 (2) shift_reg[i1] shift_reg[i];延时9个clk (3)r_declk shift_reg[9];延时1个clk 共计延时19111个clk
1.2将vtdc与hzdc延时[9]个clk(等价于单bit的数据延时clk)
同1.1原理相同只是不需要建立数组因为是但bit只是延时高低电平而已。
-----------------------------------------------------------------------------------------------------延时vtdc与hzdcreg [9 : 0] r_sfvtdc 10d0 ;reg [9 : 0] r_sfhzdc 10d0 ; reg vtdca 10d0 ; reg hzdca 10d0 ; ---------------------------------------------------------------------------------------------------延时always (posedge pi_pxck)beginr_sfvtdc {r_sfvtdc[8 : 0], r_vtdc};r_sfhzdc {r_sfhzdc[8 : 0], r_hzdc};end
---------------------------------------------------------------------------------------------------垂直与水平信号输出 always (posedge pi_pxck)beginvtdca r_sfvtdc[9];hzdca r_sfhzdc[9];end
带来延时的几处地方有
(1) r_sfvtdc {r_sfvtdc[8 : 0], r_vtdc};延时1个clk。
(2) vtdca r_sfvtdc[9];延时10个clk。 共计延时11个clk。
1.3将vtdc延时2个hzdc长度
每次水平信号出现下降沿时才将vtdc传给延时的数组r_sfvtdc[x]要与if判断条件下的r_sfhzdc对应的延时相对齐若用vtdc会少一行且延时时钟个数偏差会较大。
--------------------------------------------------------------vtdc延时2行reg [1 : 0] r_sfvtdb 2d0 ; reg vtdcb 1d0 ; ----------------------------------------------------------vtdc延时2行准备always (posedge pi_pxck)beginif(r_sfhzdc[1:0] 2b10) //代表出现下降沿r_sfvtdb {r_sfvtdb[0],r_sfvtdc[1] }; end --------------------------------------------------------vtdc延时2行always (posedge pi_pxck)beginvtdcb r_sfvtdb[1]; end
(1) r_sfvtdb {r_sfvtdb[0],r_sfvtdc[1] };延时2个clk
(2) vtdcb r_sfvtdb[1]; 延时2行1个clk
共计2行3个clk。
2.总结
其实也不能单纯的说延时多少个clk。而是以此时时钟的上升沿为参考标准此时的数据相对齐的时刻此刻信号从1变为0认为是1。此时刻信号从0变成1认为是0。相对应的分析时序理清思路。以垂直或水平信号的上升沿/下降沿为基准看延时了多少个clk。