Verilog实现序列产生器是Verilog基础学习甚至求职面试时的一个常见问题,它用到计数器、状态机、移位寄存器等一系列知识。因此有必要进行学习与仿真:
一、思路
状态转移形(利用状态机转移,逐个输出序列值);
移位寄存器形(输入整个序列,在时钟驱动下不断按顺序循环输出序列中的某一位,从而实现序列的循环输出);
计数形(计数与组合逻辑相结合,通过卡诺图化简得到计数值与输出的关系);
仿真:简单起见,假定实现1011序列
二、状态转移形式
采用思路一,设计状态机,实现几个状态循环转移的过程,每一个状态输出对应序列值,实现序列输出;
状态设置:
设置为四个状态,s0=2'b0、s1=2'b1、s2=2'b10、s3=2'b11(常见编码方式有二进制编码、格雷码、独热码,此处选为二进制码)
状态机设置:
三段式描述方式(时序逻辑描述状态转移、组合逻辑描述状态转移条件、时序逻辑描述输出)
Verilog代码如下:
`timescale 1ns / 1ps
//
// Company:
// Engineer: guoliang CLL
//
// Create Date: 2020/02/21 00:20:42
// Design Name:
// Module Name: seq_gen_fsm
// Project