永发信息网

Verilog HDL分频器 2分频 4分频, 8 分频,16分频

答案:3  悬赏:70  手机版
解决时间 2021-03-27 13:05
  • 提问者网友:浮克旳回音
  • 2021-03-26 22:36
Verilog HDL分频器 2分频 4分频, 8 分频,16分频
最佳答案
  • 五星知识达人网友:青灯有味
  • 2021-03-26 23:47
clk_sys为输入时钟,rst为复位信号,clk_out为输出分频时钟,div_num为分频数目。多少分频就把div_num赋多少值。
module clk_div(clk_sys, rst, clk_out,div_num);
input clk_sys;
input rst;
input [4:0] div_num;
output clk_out;
reg clk_out;
reg [3:0] baud_count;
always @(posedge clk_sys)
begin
if (rst)
begin
baud_count<=0;
clk_out<=0;
end
else
begin
if (baud_count==(div_num/2)-1)
begin
baud_count<=0;
clk_out<=~clk_out;
end
else
begin
baud_count<=baud_count+1;
clk_uart<= clk_out;
end
end
end
endmodule
全部回答
  • 1楼网友:患得患失的劫
  • 2021-03-27 00:42
引用ztllly的回答:
clk_sys为输入时钟,rst为复位信号,clk_out为输出分频时钟,div_num为分频数目。多少分频就把div_num赋多少值。
module clk_div(clk_sys, rst, clk_out,div_num);
input clk_sys;
input rst;
input [4:0] div_num;
output clk_out;
reg clk_out;
reg [3:0] baud_count;
always @(posedge clk_sys)
begin
if (rst)
begin
baud_count<=0;
clk_out<=0;
end
else
begin
if (baud_count==(div_num/2)-1)
begin
baud_count<=0;
clk_out<=~clk_out;
end
else
begin
baud_count<=baud_count+1;
clk_uart<= clk_out;
end
end
end
endmodule分频数为奇数另当别论
  • 2楼网友:刀戟声无边
  • 2021-03-26 23:53
没必要用到verilog HDL吧,直接用原理图就可以做出来了。
4个D触发器首尾相接。每个D触发器的输出输入端相接(中间加一个非门),输出端再接下一个D触发器的CLK,系统时钟就直接接在第一个D触发器的CLK端。这样可以将误差减到最低。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯