【数字逻辑 | 组合电路基础】Verilog语法

简介: 【数字逻辑 | 组合电路基础】Verilog语法

👉引言💎


学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。 热爱写作,愿意让自己成为更好的人............

铭记于心
🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉


一、FPGA的一般设计流程


1.电路设计

根据需求指定电路设计方案

  • 比如设计一个时序电路,需要明确系统功能,决定采用同步还是异步,数据通路和控制电路如何设计,需要几个触发器,电路状态如何转换...
  • 通常,电路设计细化到寄存器传输级(RTL)即可,无需精确到门级

2.代码编写

  • HDL电路描述语言,可层次化,通用性强

3.功能仿真

4.综合实现

  • 完成HDL代码(较高层次电路描述)到真实芯片电路的转换过程,类似于编译器将高级语言转换为目标机器的二进制代码的过程。
  • 综合阶段:
  • 网表生成:检查代码语法,给出错误报告。将代码编译为由基本逻辑单元连接而成的逻辑网表。
  • 门级优化:将用户的设计自动转换成一个等价或更优电路;
  • 工艺映射:决定网表中的每一个元件如何在FPGA的可用资源中实现
  • 实现阶段:将综合出的网表映射为FPGA芯片内部固有的硬件逻辑模块上(称为布局),然后基于布局的拓扑,利用内部的连线资源,将逻辑模块连接起来(称为布线)。
  • 时序分析:计算所有模块和走线延迟,产生一系列表格以量化电路性能。并用来确定生成电路是否满足时序要求。若无异常,将生成一个bitstream比特流文件,该文件即为最终电路。

5.上板调试

  • 将综合实现生成的比特流文件下载到FPGA芯片中,运行电路,观察其工作是否正常,若有问题,要调试定位出错的原因


二、Verilog基本语法


  • 基本语法
  • 门电路

image.png

  • assign
  • always
    各个always块并行执行,always块可以产生各种逻辑,电平触发的always块常用来描述组合逻辑行为;沿触发的always块常用于时序逻辑的功能描述。通过综合工具自动将其转换为相应的逻辑结构

image.png

  • 位置关联法
  • 名称关联法

image.pngimage.png


三、注意事项及设计流程


  • 实验板使用注意事项
  • 插拔USB数据线前,最好电源开关处于off状态。
  • Micro USB避免插反,应该是带勾的平头朝上,如果发现很难插拔,需要检查是否插反。(损坏概率最高)
  • 尽量避免湿手、带静电的手接触电路板及外设接口部分。
  • 用外设的时候注意电平,应该是3.3V兼容5V输入,避免高电压接入。
  • 注意安装Vivado和工程目录不要出现中文,也不要使得工程所在目录太深。
  • 电脑的用户名不要设置为中文,会出现各种诡异的问题。
  • 主要设计流程以及注意事项
  • 设计流程
  • .V输入(add Sources)->综合(Run synthesis)->添加约束文件->添加仿真文件->功能仿真->运行实现过程(Run implementation)->生成bit流(Generate Bitstream)->Auto connect target ->Program Divice
  • 区分仿真和综合:功能仿真不是必须,但却非常必要;一定要学会通过看仿真时序来验证电路功能的正确性。 习惯查看综合后的设计,如RTL Schematic,熟悉“什么样的代码会综合成什么样的电路”,有助于编程技能提升。
  • 生成bit流后,再接入电路板
  • 关于Testbench代码(测试文件代码):
    结构
module testbench;// 通常testbench没有输入与输出端口
    信号或变量定义声明;
    使用initial或always语句来产生激励波形;
    例化设计模块;
    监控和比较输出响应;
endmodule

🌹写在最后💖: 路漫漫其修远兮,吾将上下而求索!伙伴们,再见!🌹🌹🌹


相关文章
|
7月前
|
存储 Shell Python
零基础学会Python编程——不同的运算:算术、关系与逻辑(1)
零基础学会Python编程——不同的运算:算术、关系与逻辑(1)
107 0
|
6月前
|
存储
数字逻辑与模拟电子技术-部分知识点(4)——数电部分-组合电路的一般分析和设计方法、三人和四人表决器的设计、SR触发器、D触发器、JK触发器
数字逻辑与模拟电子技术-部分知识点(4)——数电部分-组合电路的一般分析和设计方法、三人和四人表决器的设计、SR触发器、D触发器、JK触发器
119 0
|
异构计算
【数字电路】Y图 | 逻辑操作符 | 布尔函数 | Combinational systems
【数字电路】Y图 | 逻辑操作符 | 布尔函数 | Combinational systems
73 0
|
C语言 异构计算
【FPGA】Verilog 基础速览 | 数据类型 | HDL常数声明 | Timescale | 操作符 | 阻塞语句 | 非阻塞语句
【FPGA】Verilog 基础速览 | 数据类型 | HDL常数声明 | Timescale | 操作符 | 阻塞语句 | 非阻塞语句
60 0
|
芯片 异构计算
第三章 硬件描述语言verilog(三)功能描述-时序逻辑
第三章 硬件描述语言verilog(三)功能描述-时序逻辑
275 0
第三章 硬件描述语言verilog(三)功能描述-时序逻辑
|
开发工具 芯片 异构计算
Verilog 设计方法
Verilog 的设计多采用自上而下的设计方法(top-down)。即先定义顶层模块功能,进而分析要构成顶层模块的必要子模块;然后进一步对各个模块进行分解、设计,直到到达无法进一步分解的底层功能块。这样,可以把一个较大的系统,细化成多个小系统,从时间、工作量上分配给更多的人员去设计,从而提高了设计速度,缩短了开发周期。
177 1
|
存储 传感器 物联网
【数字逻辑 | 组合电路基础】电路基础知识
【数字逻辑 | 组合电路基础】电路基础知识
【数字逻辑 | 组合电路基础】电路基础知识
|
人工智能 BI 编译器
Verilog的过程赋值
过程性赋值是在 initial 或 always 语句块里的赋值,赋值对象是寄存器、整数、实数等类型。 这些变量在被赋值后,其值将保持不变,直到重新被赋予新值。 连续性赋值总是处于激活状态,任何操作数的改变都会影响表达式的结果;过程赋值只有在语句执行的时候,才会起作用。这是连续性赋值与过程性赋值的区别。 Verilog 过程赋值包括 2 种语句:阻塞赋值与非阻塞赋值。
165 0
Verilog语法入门(二)多bit逻辑门
Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。
215 0
|
算法
Verilog语法入门(一)简单组合逻辑电路
Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。
189 0
下一篇
DataWorks