初识 Verilog HDL , 什么是verilog HDL?

简介: 这是一篇关于Verilog HDL的学习笔记摘要。Verilog是一种硬件描述语言,用于数字系统的多层抽象设计,包括行为、数据流和结构。设计流程包括功能设计、Verilog描述、软件模拟、逻辑综合和硬件实现。模块是Verilog的基本单元,代表逻辑实体,通过并行运行和分层连接实现复杂系统。模块包含端口列表和定义,通过模块调用(实例化)实现子模块连接。Verilog的参数声明和预处理指令(如`define、`include和`timescale)增加了代码的可读性和灵活性。笔记指出Verilog与C语言有相似之处,易于学习。

2010年学习FPGA编程时候,写的读书笔记。 搬运到这里。




什么是verilog HDL?

      verilog是一种硬件描述语言,可以在算法级、门级到开关级的多种抽象设计层次上对数字系统建模。它可以描述设计的行为特性、数据流特性、结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。此外,verilog提供了编程语言接口,通过该接口用户可以在模拟、验证期间从外部访问设计,包括模拟的具体控制和运行。

      verilog不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用verilog仿真器进行验证。verilog从C语言中继承了多种操作符和结构,所以从结构上看两者有很多相似之处。

设计流程:功能设计-->用verilog描述电路-->软件模拟与仿真-->考察结果--->逻辑综合-->代码下载到硬件电路--->完成。

1. 基本机构

1.1 模块

      模块(module)是verilog最基本的概念,也是v设计中的基本单元。每个v设计的系统都是由若干模块组成的。

A:模块在语言形式上是以关键词module开始,以关键词endmodule结束的一段程序。

B:模块的实际意义是代表硬件电路上的逻辑实体。

C:每个模块都实现特定的功能。

D:模块的描述方式有行为建模和结构建模之分。

E:模块之间是并行运行的。

F:模块是分层的,高层模块通过调用、连接低层模块的实例来实现复杂的功能。

G:各模块连接完成整个系统需要一个顶层模块(Top-module)。

无论多么复杂的系统,总能划分成多个小的功能模块。因此系统的设计可以按照下面三个步骤进行:

(1)把系统划分成模块;

(2)规划各模块的接口;

(3)对模块编程并连接各模块完成系统设计。

模块的结构是这样的:

module <模块名>(<端口列表>);

<定义>

<模块条目>

endmodule

其中:

模块名是模块唯一的标识符;

端口列表是输入、输出和双向端口的列表,这些端口用来与其他模块进行连接。

定义 则是一段程序,用来指定数据对象为寄存器型、存储器型、线型以及过程块,诸如函数块和任务块;

模块条目 也是一段程序,将上面定义的东东和端口组合起来,是说明这个模块要做什么的语句;

标识模块结束的endmodule之后没有分号。

需要注释时,用//即可,这和c语言一样。

1.2 模块的调用

     在做模块划分时,通常会出现这种情形:某个大的模块中包含了一个或多个功能子模块。verilog是通过模块调用或称为模块实例化的方式来实现这些子模块与高层模块的连接的。下面是通过两个NAND门实现一个与门的代码:

module AND(in1, in2, out);

input in1, in2;

output out;

wire w1;                                   //一个模块内部连线

NAND NAND1(in1, in2, w1);      //调用(实例化)一个NAND子模块

NAND NAND2(w1, w1, out);      //调用(实例化)一个NAND子模块

endmodule                                 //AND模块结束

调用模块实例的一般形式为:

<模块名><参数列表><实例名>(<端口列表>);

其中参数列表是传递到子模块的参数值,参数传递的典型应用是定义门级时延。

1.3 测试模块

2. 程序设计基础

    Verilog其实是最容易学会的一种编程语言,因为它的结构和语法都比较简单而且和C语言相似。

2.1 参数声明

    程序中经常多次出现某些数字,如延迟时间或变量的宽度,有时可能要改变这些值,这种情况下经常要用到参数。参数一经声明,就视其为一个常量,在整个仿真过程中不再改变。

parameter LINELENGTH = 132, ALL_X_S = 16'bx;

parameter BIT = 1, BYTE = 8, PI = 3.14;

parameter STROBE_DELAY = (BYTE+BIT)/2;

使用参数可以提高程序的可读性,也利于修改。

2.2 预处理指令

和C相似,V也有预处理指令,不过它的预处理指令以反引号“`”开头。

(1)`define和`undef :前者相当于C中的#define,后者取消`define所做的定义。

(2)`ifdef、`else和`endif :这三个编译器指令通常一起出现,和普通的if-else结构类似,这些编译器指令用于条件编译。

(3)`include

这个`include要注意一下,它用于嵌入“内嵌文件”的内容,这里的内嵌文件通常也是verilog文件。如下所示,在文件adder.v中有如下内容:

`include "../../halfaddr.v"

module adder;

...........

endmodule

在编译时,adder.v中的`include这一行将由halfadder的内容代替。

(4)`timescale

在Verilog模型中,所有时延都用单位时间表示。`timescale编译器指令定义时延单位和时延精度,其格式为:

`timescale time_unit / time_precision

其中,time_unit和time_precision由值1、10和100以及单位s、ms、us、ns、ps和fs组成。前者定义了时延单位,后者定义了时延精度。

当设计中多个模块带有自身的`timescale编译指令时会发生什么呢?在这种情况下,模拟器总是定位在所有模块的最小时延精度上,并且所有时延都相应的换算成最小的时延精度。

小结一下:

这一章比较简单,其实verilog与C语言有许多相通之处,所以学习并掌握这种语言应该不是特别困难。

相关文章
|
SQL 算法 前端开发
技术分享-动态脱敏
数据脱敏(Data Masking),又称数据混淆、数据漂白、数据去隐私化。用虚假的数据掩饰真实数据,以达到防止数据泄漏的目的。
1068 21
|
3月前
|
数据采集 Web App开发 文字识别
基于 Python 的反爬虫策略突破与逆向技巧总结
本文介绍四大常见反爬策略及Python应对方案:User-Agent伪装、代理IP绕过IP限制、Tesseract识别验证码、Selenium模拟浏览器获取动态数据,助你合法、高效采集网页信息。
287 22
|
3月前
|
传感器 监控 安全
RFID为战略物资提供安全保障
RFID技术通过全生命周期闭环管理,实现战略物资在生产、仓储、运输、分发各环节的防伪溯源、实时监控与权限管控,支持快速盘点、自动报警与数据加密,提升战备效率与安全保障,广泛应用于军事、能源等关键领域。
|
3月前
|
数据采集 安全 网络安全
跨境与采集,高匿名代理IP显神通
高匿名代理IP能完全掩盖用户真实IP及代理身份,提供极致隐私保护,有效绕过地域限制,保障数据采集、跨境电商、网络安全等场景下的操作稳定与安全,是合法合规网络活动的重要工具。
182 21
|
传感器 安全 自动驾驶
汽车智能网联时代如何解决用户隐私问题?
随着科技的飞速发展,伴随着汽车行业的数字化转型,智能网联已经成为了当前汽车发展的重要趋势。新时代的智能网联车辆不仅具备了传统汽车的功能,还配备了各种传感器、通信设备和计算能力,使它们能够实现自动驾驶、实时交通信息获取、远程诊断等功能。然而,随着智能网联汽车的普及以及智能化程度的提高,用户的隐私问题也逐渐凸显,引起广泛关注。那么,就让我们一起讨论一下智能网联汽车隐私保护的问题:
363 21
|
监控 前端开发 JavaScript
楼层导视软件
楼层导视软件通过直观的3D地图和精准的实时定位功能,帮助用户快速找到目的地,大大节省了时间和精力。
506 2
楼层导视软件
|
物联网 智能硬件
物联卡如何选择
选择物联卡需综合考量设备类型与数量、流量需求及卡种特性。明确设备属性后,挑选适宜流量套餐,并了解普通物联网卡、语音卡、NB-IoT卡及陶瓷卡等不同类型的应用场景。同时考虑网络覆盖、服务质量及成本预算,优选性价比高且售后服务完善的运营商,确保物联卡兼容设备并顺利完成实名认证。
物联卡如何选择
|
存储 JavaScript 前端开发
HarmonyOS 3.1/4.0应用升级到HarmonyOS NEXT改动点
在 “2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”(<https://coding.imooc.com/class/843.html>)视频课程中,因为讲师在该课程授课时是使用的HarmonyOS 3.1/4.0应用(API 9),如果部分学员采用了最新的HarmonyOS NEXT API,此时就会遇到API兼容性的问题。
679 1
HarmonyOS 3.1/4.0应用升级到HarmonyOS NEXT改动点
|
搜索推荐 数据可视化 数据挖掘
会展中心定位导航:精准展位指引,提升用户参馆体验,增加企业成交机会!
在数字化时代,会展中心借助物联网、大数据与AI技术,推出了智能定位导航系统,革新参会体验。展前通过线上展位预约和可视化招商地图,简化招商流程,提高展位分配效率。展会期间,利用精准定位技术,实现一键导航,同时提供个性化展位推荐,增强参观效率与满意度。系统还支持位置分享、车位检索等功能,并通过数据分析为决策提供支持,全面提升会展品牌形象与竞争力。
580 2
会展中心定位导航:精准展位指引,提升用户参馆体验,增加企业成交机会!
|
搜索推荐 定位技术 vr&ar
科技助力医疗:医院AR导航系统的实际应用与效益分析
在快节奏的现代医疗环境中,患者与医护人员对高效、便捷的院内导航需求日益增长。随着科技的飞速发展,传统的纸质地图已难以满足复杂多变的医疗空间需求。在此背景下,集成AR(增强现实)技术的院内导航系统应运而生,以其独特的优势和创新功能,正逐步成为智慧医院建设的重要组成部分。
636 2
科技助力医疗:医院AR导航系统的实际应用与效益分析