实验 12:奇数分频器
⼀ 实验⽬的
1. 掌握分频器电路的设计⽅法
2. 掌握Quartus II软件⽂本输⼊设计的流程
⼆ 实验内容
2.1 设计输⼊
1. 模块名称:FrequencyDivider
2. 输⼊输出:CLK、RSTn、CLK_15
2.2 引脚约束
1. 输⼊端 ⾃定义
2. 输出端 ⾃定义
2.3 设计要求
1. 输出时钟的周期是输⼊时钟的15倍(15分频器)
2. 50% 占空⽐两种分频
3. 使⽤RTL View分析电路的区别
2.4 电路仿真1. 使⽤ModelSim仿真
2. 功能仿真
三 实验报告
1. 设计代码、RTL视图
2. 仿真结果
3. 报告中附代码和仿真结果截图
四:实验报告
(1)7:15分频
即分频输出CLK15的一个周期中,高低电平时间之比为 7:8,据此可以在控制输出CLK15的高低电平
设计代码:
module FrequencyDivider(CLK,RSTn,CLK_15);
input CLK,RSTn;
output CLK_15;
reg [3:0]counter_p,counter_n;
reg CLK_p,CLK_n;
assign CLK_15 = CLK_p | CLK_n;
always@(posedge CLK or negedge RSTn)
if(! RSTn) begin
counter_p <= 0;
CLK_p <= 0;
end
else if(counter_p < 14)
begin
counter_p <= counter_p + 1;
if(counter_p < 7)
CLK_p <= 1;
else
CLK_p <= 0;
end
else
counter_p <= 0;
always@(negedge CLK or negedge RSTn)
if(! RSTn) begin
counter_n <= 0;
CLK_n <= 0;
end
else if(counter_n < 14)
begin
counter_n <= counter_n + 1;
if(counter_n < 7)
CLK_n <= 1;
else
CLK_n <= 0;
end
else
counter_n <= 0;
endmodule
2.RTL view
3.创建VWF文件进行功能仿真:
4.引脚约束和检查分析:
5.使用专用Modelsim进行仿真:
两个文件:FrequencyDivider.v 和 FrequencyDivider_tb.v 前者是源文件copy添加到Modelsim项目中去的,后者是tesebench文件
测试文件testbench代码:
`timescale 1ns/1ns
module FrequencyDivider_tb1;
reg clk,rstn;
wire clk15;
FrequencyDivider U1(.CLK(clk),
.RSTn(rstn),
.CLK_15(clk15));
always #10 clk=~clk;
initial begin
clk=0;
rstn=0;
#1 rstn=1;
end
endmodule
仿真结果:
(2)50%分频 【是由两个分别由上升沿pos和下降沿neg触发的分频信号合成(或 运算)】
设计代码:
module FrequencyDivider(CLK,RSTn,CLK_15);
input CLK,RSTn;
output CLK_15;
reg [3:0]counter_p,counter_n;
reg CLK_p,CLK_n;
assign CLK_15 = CLK_p | CLK_n;
always@(posedge CLK or negedge RSTn)
if(! RSTn) begin
counter_p <= 0;
CLK_p <= 0;
end
else if(counter_p < 14)
begin
counter_p <= counter_p + 1;
if(counter_p < 7)
CLK_p <= 1;
else
CLK_p <= 0;
end
else
counter_p <= 0;
always@(negedge CLK or negedge RSTn)
if(! RSTn) begin
counter_n <= 0;
CLK_n <= 0;
end
else if(counter_n < 14)
begin
counter_n <= counter_n + 1;
if(counter_n < 7)
CLK_n <= 1;
else
CLK_n <= 0;
end
else
counter_n <= 0;
endmodule