先来回答上周的两个问题。问题1、 8位循环移位寄存器源代码- module shift
- (
- input clk,rstn,
- output reg [7:0] dout
- );
- /***************************************/
- always@(posedge clk or negedge rstn)
- begin
- if(!rstn)
- dout[7:0]<=8'b00000001;
- else
- dout[7:0]<={dout[6:0],dout[7]};
- end
- /***************************************/
- endmodule
复制代码对于这个题目,其实主要想让大家了解reg寄存器类型,还有就是练习位拼接符{}。一般的,我们在给模块复位、清零或置数等的时候,会使用异步操作。这样用有什么用呢?就是在复位、清零或置数等的时候是可以独立进行,不受时钟的约束。
问题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
复制代码评分
查看全部评分
一周热门 更多>