設計一個4位右循環一個1的環形計數器。
將移位寄存器的輸出q0連接到觸發器q3的輸入,並且在這4個觸發器中只有一個輸出為1,另外3個為0,這樣就構成了一個環形計數器。初始化復位時,給q0一個置位信號,則唯一的1將在環形計數器中循環移位,每4個時鐘同期輸出一個高電平脈衝。
用行為級描述帶有復位的移位寄存器
用於Diamond仿真的程序清單 ring.v
module ring #
(parameter CNT_SIZE = 8)
(input wire clk,rst, //時鐘和復位輸入
output reg [CNT_SIZE-1:0] cnt //計數器輸出);
always@(posedge clk)
if(!rst) cnt <= 8'b0000_0001; //復位初值
else cnt <= {cnt[0],cnt[CNT_SIZE-1:1]}; //右移循環計數
endmodule
仿真文件ring_tb.v
`timescale 1ns/100ps //仿真時間單位/時間精度
module ring_tb;
reg clk,rst;
wire [7:0] q;
initial begin clk =0; rst =0; #20 rst =1; end
always#10 clk =~clk;
ring u1 ( .clk (clk), .rst (rst), .cnt (q) );
endmodule
打開Lattice Diamond,建立工程。
新建Verilog HDL設計文件,並鍵入設計代碼。
根據仿真教程,實現對本工程的仿真,驗證仿真結果是否與預期相符。
操作視頻:
趕快掃碼關注我吧👇~~小編會定期分享基於FPGA的設計貼,千萬不要錯過哦!
更多產品信息~~~歡迎關注下面小程序👇