【Verilog必做题】
9. 序列产生
产生序列“11010110”,串行循环输出该序列;
给出WORD或PDF版本的报告,包括但不限于文字说明、代码、仿真测试图等。
【解答】:
序列产生有多种实现方式,常用的有状态机、移位寄存器、计数器等。
1. 状态机:不考虑状态简化的情况下,要输出的序列多少位,就用多少个状态,每次状态跳转后输出对应的1/0,实现序列的循环输出,当序列位数较多时,需要的状态也多,程序复杂,占用的资源多,可以通过对状态进行化简来简化逻辑和节省资源;
状态机序列产生在视频的最后:
https://www.bilibili.com/video/BV1yC4y1h7rHwww.bilibili.com/************************************************************
2. 移位寄存器方式
移位寄存器方式,最简单最方便,序列N位,就使用N位的移位寄存器,即用N个触发器。如果想要节省资源,就需要对序列进行化简,看最少使用多少个触发器能够正确输出整个序列。
比如:
视频讲解:
https://www.bilibili.com/video/BV1hk4y1B7Nbwww.bilibili.com关键代码如下:
always
3. 计数器方式
每个计数值对应一个输出,对于8位输出的序列,计数0-7共8个数,只需要3-bit位宽的计数器,即使用3个触发器即可。每个计数值对应一个输出,画出对应的真值表,画出卡诺图,化简卡诺图。
关键代码:
always
可以看到,综合出的计数器只消耗了3个触发器(右边的两个触发器是输出寄存,也可以不寄存就输出),使用组合逻辑对输出的计数值进行逻辑运算,得到输出。这样是最节省资源的,对N位的输出序列,需要的触发器个数只需要以2为底的logN并向上取整。
https://www.bilibili.com/video/BV1yC4y1h7rHwww.bilibili.com https://www.bilibili.com/video/BV1hk4y1B7Nbwww.bilibili.com