《Verilog语言及FPGA实现》课程知识整理

一、阻塞和非阻塞赋值在行为和使用上的差异性:
1.行为差异
阻塞赋值:

  • 阻塞赋值语句会按顺序依次执行,在一条阻塞赋值语句执行完毕后,才会执行下一条语句;
  • 一旦执行阻塞赋值语句,变量的值会立即更新。例如在always块中,使用阻塞赋值时,变量会在赋值语句执行后马上得到新值。

非阻塞赋值:

  • 非阻塞赋值语句在仿真的同一个时间步 内,会在所有阻塞赋值语句执行完之后,同时进行赋值操作。
  • 变量的值不会立即更新。而是在当前时间步结束时统一更新。

2.使用差异
阻塞赋值:

  • 阻塞赋值常用于组合逻辑的建模,因为组合逻辑的输出只取决于当前的输入,使用阻塞赋值可以清晰地描述逻辑的顺序执行过程。
  • 当需要实现一些简单的顺序操作,如临时变量的计算和传递时,阻塞赋值是一个合适的选择。

非阻塞赋值:

  • 非阻塞赋值是时序逻辑建模的首选方式,因为时序逻辑的输出不仅取决于当前的输入,还与时钟信号和寄存器的状态有关。使用非阻塞赋值可以避免竞争冒险问题,确保寄存器的值在一个时钟周期内只更新一次。
  • 在需要同时更新多个寄存器的值时,非阻塞赋值可以保证所有寄存器的值在同一个时间步内同时更新,避免出现数据不一致的问题。

阻塞赋值顺序执行,类似于软件;非阻塞赋值并行执行,更接近真实硬件。

二、verilog仿真时信号出现x态的原因:

  1. 未初始化
  2. 多驱动
  3. 不完整的条件分支覆盖
  4. 时序违例,如不满足建立保持时间等

1、含清零功能的三人抢答器设计

设计要求:控制信号为启动信号,三个输入端口编号为01、02、03。高电平有效。启动信号无效,输出端口输出数值为0;启动信号有效后,输出为最快有效的输入端口编号。

一种可能的实现方式如下:

仿真结果如下,正确实现了抢答器功能:


2、四位并串转换器设计

设计要求:使用 Verilog语言描述一个4位并串转换器,4位并行输入,1位输出、输出位置通过选通信号sel设置为最高位或最低位。

这里使用状态机来实现(方法不唯一),定义三个状态:IDLE、LOAD与CONVERT,其中处于LOAD状态时载入并行数据,在CONVERT状态进行并串转换:

状态转移组合逻辑如下,当检测到load信号时进入LOAD状态,载入结束后load拉低则开始数据转换,当计数达到4时停止转换,进入IDLE状态:

数据输出时序逻辑如下,在LOAD状态锁存数据data_in,在CONVERT状态,sel为1将数据右移输出,为0则左移输出,同时bit_cnt递增:

仿真结果如下,可以看到CONVERT状态共持续了四个周期,在shift_reg有效的下一个周期开始输出数据,对于输入数据data_in=4'b0101,在sel为1时串行输出1、0、1、0,在sel为0时串行输出0、1、0、1,正确实现了功能:


3、占空比可调的脉宽发生器设计

设计要求:占空比分别为1:2,1:3,2:3,3:2和 1:1。

一种实现方式如下:

仿真结果如下,正确实现功能:


4、占空比变化的时钟信号生成

实验要求:使用verilog语言编写测试模块的时钟信号,在确定频率下,每10个时钟周期为一个循环,第一周期提供一个占空比(高电平占一个时钟周期的比例)1:1的clk信号,第二个周期提供一个占空比1:2的clk信号,依次类推,第十个周期提供一个占空比1:9的clk信号。

类比【3】的实现方式,可以给出激励如下:

仿真结果如下,正确实现时钟信号输出。


相关推荐
迎风打盹儿5 个月前
FPGA点亮ILI9488驱动的SPI+RGB接口LCD显示屏(二)
fpga·verilog hdl·ili9488·rgb接口·lcd显示屏
stm 学习ing1 年前
HDLBits训练6
经验分享·笔记·fpga开发·fpga·eda·verilog hdl·vhdl
stm 学习ing1 年前
HDLBits训练4
经验分享·笔记·fpga开发·课程设计·fpga·eda·verilog hdl
stm 学习ing1 年前
HDLBits训练3
c语言·经验分享·笔记·算法·fpga·eda·verilog hdl
KKK3号1 年前
Verilog HDL学习笔记
嵌入式硬件·fpga开发·verilog hdl·1024程序员节
移知1 年前
基于Verilog HDL的FPGA开发入门
fpga开发·verilog·verilog hdl·fpga入门
小夏与酒2 年前
【FPGA零基础学习之旅#14】串口发送字符串
学习·fpga开发·字符串·串口通信·verilog hdl
日晨难再2 年前
数字IC前端学习笔记:数字乘法器的优化设计(Dadda Tree乘法器)
fpga开发·硬件工程·verilog hdl·数字ic·数字乘法器
日晨难再2 年前
数字IC前端学习笔记:数字乘法器的优化设计(阵列乘法器)
fpga开发·硬件工程·verilog hdl·数字ic·数字乘法器