📄 5分频.v
字号:
这很简单,按下列方法可以获得占空比为50%的分频器:
(1)写一个根据上升沿触发的2:3的5分频器(低2高3);
(2)再写一个根据下降沿触发的2:3的5分频器;
(3)两个输出相“与”即可。
提供一个简单的时钟线控制实现50%占空比的方案,当然对与不对,大家指教。
比如大家要计数到5:0,1,2,3,4;在计到2的时候,使得控制信号
为1,并将该控制信号与时钟信号异或。这样假如采用上升沿计数的话,
在下一个下降沿就会被反转为上升沿,使得在一个时钟周期内,输出
2和3。输出3后时钟线恢复正常。于是我们实现了在5个周期内输出6
个状态,我想下面的事情,诸位大侠都是知道的罗,不罗嗦啦
我想我提供的方法应该可以和时钟边沿同步,只要合适地选择
状态的编码,使得状态0,1,2对应输出为0,状态3,4,5对应输出为
1即可。
module tridivf(clk,rst,clk3);
input clk,rst;
output clk3;
reg QA,QB,C,clk3;
always @(QA or QB)
C = ~(QA & QB);
always @(posedge clk or posedge rst)
if(rst)
QA <= 1'b0;
else
if(!C)
QA <= ~QA;
else
QA <= 1'b1;
always @(negedge clk or posedge rst)
if(rst)
QB <= 1'b0;
else
if(!C)
QB <= ~QB;
else
QB <= 1'b1;
always @(posedge C or posedge rst)
if (rst)
clk3 <= 1'b0;
else
clk3 <= ~clk3;
endmodule
觉得这个写法不好,看起来很简洁,不过我觉得不够规范。//随便说说。
1)always @(posedge C)
clk3 = ~clk3; 这相对于clk应该是一个异步电路
。
2)既用到posedge clk,也用到negedge clk,对于综合做sta来说,
并不提倡这样写。
3)always @(posedge clk )
if (C)
QA = ~QA;
else
QA = 1'b1;
改成:always@(posedge clk)
if(!C)
QA = 1'b1;
else
QA = ~QA; 也许更符合电路的行为吧。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -