實驗15:環(huán)形計數(shù)器
實驗?zāi)康?/strong>
本文引用地址:http://www.butianyuan.cn/article/202310/451365.htm(1)熟悉和掌握FPGA開發(fā)流程和Lattice Diamond軟件使用方法;
(2)通過實驗理解和掌握環(huán)形計數(shù)器原理;
(3)學(xué)習(xí)用Verilog HDL行為級描述時序邏輯電路。
實驗任務(wù)
設(shè)計一個4位右循環(huán)一個1的環(huán)形計數(shù)器。
實驗原理
將移位寄存器的輸出q0連接到觸發(fā)器q3的輸入,并且在這4個觸發(fā)器中只有一個輸出為1,另外3個為0,這樣就構(gòu)成了一個環(huán)形計數(shù)器。初始化復(fù)位時,給q0一個置位信號,則唯一的1將在環(huán)形計數(shù)器中循環(huán)移位,每4個時鐘同期輸出一個高電平脈沖。
Verilog HDL建模描述
用行為級描述帶有復(fù)位的移位寄存器
用于Diamond仿真的程序清單 ring.v
module ring #
(
parameter CNT_SIZE = 8
)
(
input wire clk,rst, //時鐘和復(fù)位輸入
output reg [CNT_SIZE-1:0] cnt //計數(shù)器輸出);always@(posedge clk)
if(!rst)
cnt <= 8'b0000_0001; //復(fù)位初值
else
cnt <= {cnt[0],cnt[CNT_SIZE-1:1]}; //右移循環(huán)計數(shù)
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設(shè)計文件,并鍵入設(shè)計代碼。
根據(jù)仿真教程,實現(xiàn)對本工程的仿真,驗證仿真結(jié)果是否與預(yù)期相符。
仿真結(jié)果和實驗現(xiàn)象
評論