1.新建工程
图 1
图 2
图 3
图 4
2.添加源文件
图 5
图 6
图 7
3.编写源文件
图 8
4,编译工程
图 9
图 10
图 11
图 12
图 13
图 14
图 15
图 16
图 17
图 18
图 19
图 20
图 20
图 22
图 23
图 24
图 25
图 26
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: hust
// Engineer: lidong
//
// Create Date: 18:19:32 07/15/2015
// Design Name:
// Module Name: clk_divide
// Project Name: clk_divide
// Description: 实现占空比为50%的奇分频
//////////////////////////////////////////////////////////////////////////////////
module clk_divide(
clk,rst_n,
clk_7divide
);
//input
input clk,rst_n;
//output
output clk_7divide;
//////////////////////////////////////////////////////////////////////////////////
reg [ 2:0 ]cnt1,cnt2;
always @( posedge clk or negedge rst_n ) //上升沿7进制计数器
if( !rst_n )
cnt1 <= 'd0;
else if( cnt1 == 'd6 )
cnt1 <= 'd0;
else
cnt1 <= cnt1 + 1'b1;
always @( negedge clk or negedge rst_n )//下降沿7进制计数器
if( !rst_n )
cnt2 <= 'd0;
else if( cnt2 == 'd6 )
cnt2 <= 'd0;
else
cnt2 <= cnt2 + 1'b1;
//////////////////////////////////////////////////////////////////////////////////
reg clk1,clk2;
always @( posedge clk or negedge rst_n ) //计数到(N-1)/2 时翻转
if( !rst_n )
clk1<= 'd0;
else if( cnt1 == 'd3 || cnt1 == 'd6 )
clk1 <= ~clk1;
always @( negedge clk or negedge rst_n )//计数到(N-1)/2 时翻转
if( !rst_n )
clk2 <= 'd0;
else if( cnt2 == 'd3 || cnt2 == 'd6 )
clk2 <= ~clk2;
//////////////////////////////////////////////////////////////////////////////////
assign clk_7divide = clk1 | clk2;
//////////////////////////////////////////////////////////////////////////////////
endmodule
//激励文件
`timescale 1ns / 1ns
////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:lidong
// Create Date: 16:38:56 07/16/2015
// Design Name: clk_divide
// Module Name: E:/Xilinx_Prj/clk_divide/clk_div_test.v
// Project Name: clk_divide
////////////////////////////////////////////////////////////////////////////////
module clk_div_test;
// Inputs
reg clk;
reg rst_n;
// Outputs
wire clk_7divide;
// Instantiate the Unit Under Test (UUT)
clk_divide uut (
.clk(clk),
.rst_n(rst_n),
.clk_7divide(clk_7divide)
);
initial begin
// Initialize Inputs
clk = 0;
rst_n = 0;
// Wait 100 ns for global reset to finish
#100;
rst_n = 1;
forever #10 clk = ~clk;
end
endmodule