利用主时钟产生周期方波的基本思路:
1)利用计数器对时钟沿进行计数,计数总数为方波周期/时钟周期;
2)计数总数的一半为高电平,另一半为低电平。
代码:
module Adv(clk_5m,rst,clk_25hz);
input clk_5m;
input rst;
output clk_25hz;
reg [17:0]cnt;
reg clk_25hz;
always @(posedge clk_5m or negedge rst)
if(!rst)
cnt <= 0;
else if(cnt<199999)
cnt <= cnt+1;
else
cnt <= 0;
always @(posedge clk_5m or negedge rst)
if(!rst)
clk_25hz <= 0;
else if(cnt<99999)
clk_25hz <= 1;
else
clk_25hz <= 0;
endmodule
仿真代码编写:
`timescale 1ns/1ns
`define clk_period 200 //200ns=5Mhz
//定义模块
module Adv_tb;
//定义激励接口(信号发生器接口)
reg clk_5m_tb;
reg rst_tb;
wire clk_25hz_tb;
//连线(信号发生器信号接入模块)
Adv Avd1(
.clk_5m(clk_5m_tb),
.rst(rst_tb),
.clk_25hz(clk_25hz_tb)
);
//输入激励(信号发生器信号波形参数控制输出)
ini