實(shí)驗(yàn)16:扭環(huán)形計(jì)數(shù)器
實(shí)驗(yàn)?zāi)康?/strong>
本文引用地址:http://m.butianyuan.cn/article/202310/451437.htm(1)熟悉和掌握FPGA開發(fā)流程和Lattice Diamond軟件使用方法;
(2)通過實(shí)驗(yàn)理解和掌握扭環(huán)形計(jì)數(shù)器原理;
(3)學(xué)習(xí)用Verilog HDL行為級描述時(shí)序邏輯電路。
實(shí)驗(yàn)任務(wù)
設(shè)計(jì)一個(gè)右移扭環(huán)形計(jì)數(shù)器。
實(shí)驗(yàn)原理
將移位寄存器的輸出非q0連接到觸發(fā)器q3的輸入,這樣就構(gòu)成了一個(gè)扭環(huán)形計(jì)數(shù)器。初始化復(fù)位時(shí),給q0一個(gè)初值0000,則在循環(huán)過程中依次為:000010001100111011110111001100010000。
Verilog HDL建模描述
用行為級描述右移扭環(huán)形計(jì)數(shù)器
程序清單twist.v
module twist #
(
parameter CNT_SIZE = 8
)
(input 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
仿真文件twist_tb.v
`timescale 1ns/100ps //仿真時(shí)間單位/時(shí)間精度module twist_tb;reg clk,rst;wire [7:0]q;initial
begin
clk =0;
rst =0;
#20
rst =1;
endalways#10 clk =~clk;twist u1 (
.clk(clk),
.rst(rst),
.cnt(q)
);endmodule
實(shí)驗(yàn)步驟
打開Lattice Diamond,建立工程。
新建Verilog HDL設(shè)計(jì)文件,并鍵入設(shè)計(jì)代碼。
根據(jù)仿真教程,實(shí)現(xiàn)對本工程的仿真,驗(yàn)證仿真結(jié)果是否與預(yù)期相符。
仿真結(jié)果和實(shí)驗(yàn)現(xiàn)象
評論