简单分频时序电路的设计(三分频)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单位:嵌入式系统实验室
姓名:汤晓东
内容:简单分频时序电路的设计(三分频)
时间:2010-7-7
3.练习三
模块源代码:
//-------------------文件名div3.v----------------------------------
module div3(clk_in,clk_out,reset
);
input clk_in,reset;
output clk_out;
wire clk_out;
integer n1,n2;
reg clk1,clk2;
always @(posedge clk_in or negedge reset) //检测clk_in的上升沿
begin
if (!reset)
begin
n1=0;
clk1<=1'b0; //clk1是对clk_in的三分频
end // 但是占空比为1/3 else if (n1==2)
begin
n1=0;
clk1<=1'b1;
end
else
begin
n1=n1+1;
clk1<=1'b0;
end
end
always @(negedge clk_in or negedge reset) //检测clk_in的下降沿
begin
if (!reset)
begin
n2=0;
clk2<=1'b0; //clk2也是对clk_in的三分频
end
else if (n2==2) //占空比为1/3,但是与clk1相差begin //半个时钟周期
n2=0;
clk2<=1'b1;
end
else
begin
n2=n2+1;
clk2<=1'b0;
end
end
assign clk_out= clk1 | clk2;
endmodule
//-------------------文件名div3_test.v------------------------------ `timescale 1ns/100ps
`define clk_cycle 50
module div3_test;
reg clk,reset;
wire clk_out;
always #`clk_cycle clk=~clk;
initial
begin
clk=0;
reset=1;
#10 reset=0;
#110 reset=1;
#100000 $stop;
end
div3 d0(.reset(reset),.clk_in(clk),.clk_out(clk_out)); endmodule
仿真波形图如下: