用Verilog写一个三分频电路
module divider_3 (clk, clk_out); //定义模块名称和输入输出参数
input clk; //定义输入信号clk
output clk_out; //定义输出信号clk_out
reg [1:0] cnt; //定义寄存器cnt,2位,初始化为2'b00
reg clkedge; //定义寄存器clkedge,初始化为0
always @(posedge clk) begin //以上升沿触发,开始always语句的组合逻辑部分
cnt <= cnt + 1'b1; //cnt加1
if (cnt == 3'd2) begin //当cnt=2时,执行if语句内部的逻辑功能
cnt <= 2'd0; //重新将cnt置零
clkedge <= ~clkedge; //将clkedge的值进行取反操作
end //if语句结束
end //always语句结束
assign clk_out = (cnt==3'd0)? ~clkedge : 1'bz ; //最后是一个条件表达式(三目运算符)的形式。如果CNT=0时,就将CLKEDGE的值传递到CLK_OUT中。如果CNT不为零时就传递一个高阻态信号。
endmodule
创作工场
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!