=====实验目的===== * (1)熟悉和掌握FPGA开发流程和Lattice Diamond软件使用方法; * (2)通过实验理解和掌握扭环形计数器原理; * (3)学习用Verilog HDL行为级描述时序逻辑电路。 =====实验任务===== 设计一个右移扭环形计数器。 =====实验原理===== 将移位寄存器的输出非q0连接到触发器q3的输入,这样就构成了一个扭环形计数器。初始化复位时,给q0一个初值0000,则在循环过程中依次为:000010001100111011110111001100010000。\\ {{::4位扭环形计数器.png?nolink&1000|}}\\ =====Verilog HDL建模描述===== 用行为级描述右移扭环形计数器\\ 程序清单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 仿真文件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 =====实验步骤===== - 打开Lattice Diamond,建立工程。 - 新建Verilog HDL设计文件,并键入设计代码。 - 根据仿真教程,实现对本工程的仿真,验证仿真结果是否与预期相符。 =====仿真结果和实验现象===== {{::扭环形移位寄存器仿真结果.png?nolink&1300|}}