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