k_counter.v
来自「一个实现简单的数字锁相环Verilog代码」· Verilog 代码 · 共 62 行
V
62 行
module k_counter(Kclock, reset, dnup,enable, Kmode, carry, borrow );input Kclock, reset, dnup, enable;input[2:0] Kmode;output carry, borrow;reg[8:0] count; /*可逆计数器*/reg[8:0] Ktop; /*预设模值寄存器*//*根据计数器模值设置信号Kmode来设置预设模值寄存器的值*/always @(Kmode)begincase(Kmode) 3'b001: Ktop = 7; 3'b010: Ktop = 15; 3'b011: Ktop = 31; 3'b100: Ktop = 63; 3'b101: Ktop = 127; 3'b110: Ktop = 255; 3'b111: Ktop = 511; default:Ktop = 15;endcaseend/*根据鉴相器输出的加减控制信号dnup进行可逆计数器的加减运算*/always @(posedge Kclock or negedge reset)begin if(~reset) count <= 0; else if(enable) begin if(~dnup) // 进行加运算 begin if(count==Ktop) count <= 0; else count <= count+1; end else begin // 进行减运算 if(count==0) count <= Ktop; else count <= count-1; end endendassign carry = enable&(~dnup)&(count==Ktop);assign borrow = enable&(dnup)&(count==0);endmodule
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?