Verilog HDL 之 顺序脉冲发生器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/****************************** 分频模块*************************************/
`timescale 1 ns / 1 ps
module qu_dou ( clk ,rst , a ,b );
input clk ;
wire clk ;
input rst ;
input a ;
wire a ;
output b ;
reg b ;
reg [31:0] cnt ;
reg clkout ;
always @ ( posedge clk or negedge rst )
begin
if ( rst == 1'b0 )
cnt <= 0 ;
else begin if ( a==1'b1 ) begin
if ( cnt >= 32'd3000000 )
b <= 1 ;
else
cnt <= cnt + 1'b1 ;
end
else begin b <= 1'b0 ;
cnt <= 0 ;
end
end
end
endmodule
`timescale 1 ns / 1 ps
module pulsegen ( Q ,clr ,clk ,sysclk , rst);
input clr ;
wire clr ;
input clk ;
wire clk ;
input sysclk ;
wire sysclk ;
input rst ;
wire rst ;
output [7:0] Q ;
wire [7:0] Q ;
reg [7:0] temp ;
reg x;
/***************** 例化去抖模块*************************************/ wire clk_r ;
qu_dou qu_dou (
.clk (sysclk) ,
.rst (rst) ,
.a (clk),
.b (clk_r));
//******************************************************************** assign Q =temp;
always @ ( posedge clk_r or posedge clr )
begin
if ( clr==1)
begin
temp <= 8'b00000001;
x= 0 ;
end
else
begin
x<= temp[7] ;
temp <= temp<<1 ;
temp[0] <=x;
end
end
endmodule