5.3实验十六 扭环形计数器
5.3.1实验目的
(1)熟悉和掌握FPGA开发流程和Lattice Diamond软件使用方法;
(2)通过实验理解和掌握扭环形计数器原理;
(3)学习用Verilog HDL行为级描述时序逻辑电路。
5.3.2实验任务
设计一个右移扭环形计数器。
5.3.3实验原理
将移位寄存器的输出q0非连接到触发器q3的输入,这样就构成了一个扭环形计数器。初始化复位时,给q0一个初值0000,则在循环过程中依次为:0000→1000→1100→1110→1111→0111→0011→0001→0000。

5.3.4Verilog HDL建模描述
(1)用行为级描述右移扭环形计数器
程序清单twist.v
module twist #
(
parameter CNT_SIZE = 8
)
(
input 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
(2)仿真文件twist_tb.v
`timescale 1ns/100ps //仿真时间单位/时间精度
module twist_tb;
reg clk,rst;
wire [7:0] q;
initial
begin
clk =0;
rst =0;
#20
rst =1;
end
always#10 clk =~clk;
twist u1 (
.clk (clk),
.rst (rst),
.cnt (q)
);
endmodule
5.3.5实验步骤
1.打开Lattice Diamond,建立工程。
2.新建Verilog HDL设计文件,并键入设计代码。
3.根据仿真教程,实现对本工程的仿真,验证仿真结果是否与预期相符。
5.3.6仿真结果和实验现象
