第四周:用Verilog HDL设计
先来回答上周的两个问题。
问题1、 8位循环移位寄存器
源代码
一般的,我们在给模块复位、清零或置数等的时候,会使用异步操作。这样用有什么用呢?就是在复位、清零或置数等的时候是可以独立进行,不受时钟的约束。
问题2、D触发器(上升沿触发)
源代码如下:(参考)
- module d
- (
- input clk,clr,din,
- output q;
- );
- reg din,q;
- /***************************************/
- always@(posedge clk)
- if(clr)
- q<=0;
- else
- q<=din;
- /***************************************/
- endmodule
一个时序器件(指触发器或锁存器)就是一个一位存储器。锁存器是电平敏感存储器件,触发器是沿触发存储器件。
触发器也被称为寄存器,在程序中体现为对上升沿或下降沿的探测,Verilog 中采用如下方法表示:
posedgeclk-------- 上升沿
negedgeclk-------- 下降沿
本周题目是:用VerilogHDL设计
1、带同步置位、上升沿触发的触发器
2、带异步复位和时钟使能、上升沿触发的触发
下周练习预告:分频器设计
往期回顾:
【FPGA每周一练】FPGA的HDL建模第三周
【FPGA每周一练】FPGA的HDL建模第二周
【FPGA每周一练】FPGA的HDL建模第一周
回答一个
- module DFF(
- clk,
- d,
- set_n,
- rst_n,
- q
- );
- input clk;
- input d;
- input set_n;
- input rst_n;
- output q;
- reg q;
- always@(posedge clk or negedge rst_n)
- begin
- if(!rst_n)
- q<= 1'b0;
- else if(!set_n)
- q<= 1'b1;
- else
- q<=d;
- end
- endmodule
加油啊~!最近没空来,但还是很希望持续更新
- //带异步复位和时钟使能、上升沿触发的触发器
- module DFF_CK_EN (Data, Clk, Reset, En, Q);
- input Data, Clk, Reset, En;
- output Q;
- parameter U_DLY = 1;
- reg Q;
- always @ (posedge Clk or negedge Reset)
- if ( ~Reset)
- Q <= 1'b0 ;
- else if (En)
- Q <= #U_DLY Data ;
- endmodule
- //带同步置位、上升沿触发的触发器
- module DFF_SYNC_PRE (Data, Clk, Preset, Q);
- input Data, Clk, Preset;
- output Q;
- parameter U_DLY = 1;
- reg Q;
- always @ (posedge Clk )
- if ( ~Preset)
- Q <= #U_DLY 1'b1 ;
- else
- Q <= #U_DLY Data ;
- endmodule
小编您好!请问在Verilog钟两个串联的非门(做延时用的)被优化掉了怎么解决啊?可以指点一下吗?谢谢
Q <= #U_DLY Data的 #U_DLY 用意是什么?
固定单位延时。。
怎么没有更新了,