實(shí)驗15:環(huán)形計數器
實(shí)驗目的
本文引用地址:http://dyxdggzs.com/article/202310/451365.htm(1)熟悉和掌握FPGA開(kāi)發(fā)流程和Lattice Diamond軟件使用方法;
(2)通過(guò)實(shí)驗理解和掌握環(huán)形計數器原理;
(3)學(xué)習用Verilog HDL行為級描述時(shí)序邏輯電路。
實(shí)驗任務(wù)
設計一個(gè)4位右循環(huán)一個(gè)1的環(huán)形計數器。
實(shí)驗原理
將移位寄存器的輸出q0連接到觸發(fā)器q3的輸入,并且在這4個(gè)觸發(fā)器中只有一個(gè)輸出為1,另外3個(gè)為0,這樣就構成了一個(gè)環(huán)形計數器。初始化復位時(shí),給q0一個(gè)置位信號,則唯一的1將在環(huán)形計數器中循環(huán)移位,每4個(gè)時(shí)鐘同期輸出一個(gè)高電平脈沖。
Verilog HDL建模描述
用行為級描述帶有復位的移位寄存器
用于Diamond仿真的程序清單 ring.v
module ring #
(
parameter CNT_SIZE = 8
)
(
input wire clk,rst, //時(shí)鐘和復位輸入
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]}; //右移循環(huán)計數
endmodule
仿真文件ring_tb.v
`timescale 1ns/100ps //仿真時(shí)間單位/時(shí)間精度
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
實(shí)驗步驟
打開(kāi)Lattice Diamond,建立工程。
新建Verilog HDL設計文件,并鍵入設計代碼。
根據仿真教程,實(shí)現對本工程的仿真,驗證仿真結果是否與預期相符。
仿真結果和實(shí)驗現象
評論