米联客-FPGA程序设计Verilog语法入门篇连载-03 Verilog语法_基础语法

devtools/2024/9/24 6:03:27/

软件版本:无

操作系统:WIN10 64bit

硬件平台:适用所有系列FPGA

板卡获取平台:https://milianke.tmall.com/

登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑!

1概述

本节主要讲解基础语法包含语法格式注释标识符关键字数值类与表示字符串

2语法简介

2.1 格式

1、不换行例:

always@(*)begin case(s)2'b00:q <= d[0];2'b01:q <= d[1];2'b10:q <= d[2];2'b11:q <= d[3];endcase end

2、换行例:

always@(*)
begincase(s)2'b00:q <= d[0];2'b01:q <= d[1];2'b10:q <= d[2];2'b11:q <= d[3];endcase
end

一般的书写方式推荐使用换行这个形式,比较容易理解和方便阅读。

2.2 注释

注释一般分为两种,一种单行注释,使用“//”;另一种多行注释,使用“/*  */”。例:

module MUX4_1(input [3:0]d,//MUX输入input [1:0]s,//选择信号output reg q);
/*
4选1 MUX设计
使用的组合逻辑设计
寄存输出
*/
always@(*)
begincase(s)2'b00:q <= d[0];2'b01:q <= d[1];2'b10:q <= d[2];2'b11:q <= d[3];endcase
end

其中关键符号“//”表示单行注释,“/*    */”表示多行注释,使用注释可以使得程序设计可读性较高,方便进行编程理解。

2.3 关键字与标识符

Verilog HDL中的标识符可以是任意一组字母、数字、$符号和_(下划线)符号的组合,但标识符的第一个字符必须是字母或者下划线开头,不能是$符号和数字。另外注意,标识符是区分大小写的。

Verilog HDL定义了一系列保留字,叫做关键字,它仅用于某些上下文中。注意只有小写的关键词才是保留字。

下面列出了Verilog-1364-2005语言中的所有关键字。

  1. always
  2. and
  3. assign
  4. automatic
  5. begin
  6. buf
  7. buff0
  8. buff1
  9. case
  10. casex
  11. casez
  12. cell
  13. cmos
  14. config
  15. deassign
  16. default
  17. defparam
  18. disable
  19. edge
  20. else
  21. end
  22. endcase
  23. endconfig
  24. endfunction
  25. endgenerate
  26. endmodule
  27. endprimitive
  28. endspecify
  29. endtable
  30. endtask
  31. event
  1. for
  2. function
  3. force
  4. forever
  5. fork
  6. generate
  7. genvar
  8. highz0
  9. highz1
  10. if
  11. ifnone
  12. ifcdir
  13. include
  14. initial
  15. inout
  16. input
  17. instance
  18. integer
  19. join
  20. large
  21. liblist
  22. library
  23. localparameter
  24. macromodule
  25. medium
  26. module
  27. nand
  28. negedge
  29. nmos
  30. nor
  31. not
  1. notif0
  2. notif1
  3. noshowcancelled
  4. notif0
  5. notif1
  6. pmos
  7. pulsestyle_onevent
  8. pulsestyle_ondetect
  9. rcmos
  10. real
  11. realtime
  12. reg
  13. release
  14. repeat
  15. rnmos
  16. rpmos
  17. rtran
  18. rtranif0
  19. rtranif1
  20. scalared
  21. showcanclled
  22. signed
  23. small
  24. specify
  25. specparam
  26. strong0
  27. strong1
  28. supply0
  29. supply1
  30. table
  31. task
  32. time
  1. tran
  2. or
  3. posedge
  4. output
  5. parameter
  6. tranif0
  7. tranif1
  8. tri
  9. tri0
  10. tri1
  11. triand
  12. trior
  13. trireg
  14. unsigned
  15. use
  16. uwire
  17. vertored
  18. wait
  19. wand
  20. weak0
  21. weak1
  22. while
  23. wire
  24. wor
  25. xnor
  26. xor
  27. primitive
  28. pull0
  29. pull1
  30. pulldown
  31. pullup

这里仅列出关键字,不进行具体的讲解,等后续语法用到进行详细讲解。亦或感兴趣的可以自己去查资料了解各关键字含义。

2.4 数值种类及表示方法

2.4.1数值种类

Verilog 中有四种基本的值来表示数字电路中的电平逻辑:

  1. 0:逻辑 0 低电平
  2. 1:逻辑 1 高电平
  3. x 或 X:未知
  4. z 或 Z:高阻态

“x”意味着信号数值的不确定,信号可能为 1,也可能为 0。

“z”意味着信号处于高阻态,常见于信号(input, reg)没有驱动时的数字逻辑结果。比如一个 pad 的 input 呈现高阻状态时,其逻辑值和上下拉的状态有关系。上拉则逻辑值为 1,下拉则为 0 。

2.4.2数值表示方法

Verilog 中有四种合法的基数格式,分别是二进制,八进制,十进制,十六进制,分别使用下列字符标识:

  1. 二进制 'b / 'B
  2. 八进制 'o / 'O
  3. 十进制 'd / 'D
  4. 十六进制 'h / 'H

数值可以指明位宽,也可以不指明位宽。一般格式为<位宽><进制><数字>

比如

指明位宽

assign test=16’h2581;

不指明位宽

assign test=’h2581;

2.5 字符串

字符串是由双引号包括起来的字符队列。字符串不能多行书写,即字符串中不能包含回车符。当字符串存储于寄存器中,每个字符要占8位,字符以ASCII代码形式存储。Verilog HDL语言的字符串的定义和C语言不一样。在C语言中需要用而在Verilog HDL语言中不需要用ASCII代码的0字符来表示字符串的结束。例如,为存储字符串 "www.uisrc.com", 需要 13*8bit 的存储单元。例:

reg [0: 13*8-1]       string ;assign string = "www. uisrc.com";


http://www.ppmy.cn/devtools/94613.html

相关文章

知识学习技巧:如何从 iPhone 恢复误操作删除的视频

您来这里主要是因为您想知道如何从 iPhone 恢复已删除的视频。实际上&#xff0c;如果视频是用 iPhone 拍摄的&#xff0c;您可以尝试在相册“最近删除”中找到它们。删除后它将保留 40 天。如果您清空了相册或无法从相册中找到已删除的视频&#xff0c;那么您必须尝试使用奇客…

【Linux Install】Ubuntu20, Windows10 双系统安装

1. 制作启动盘 1.1 下载 Ubuntu 系统镜像 ISO 文件 从 Ubuntu 官网下载 (https://cn.ubuntu.com/download/desktop)。官网访问慢的&#xff0c;从国内镜像点下。 1.2 烧录 Ubuntu ISO 镜像 下载 Rufus&#xff1a;从Rufus官网下载 Rufus 工具。 插入U 盘&#xff1a;将U盘插…

flume系列之:查询多个flume agent组是否有topic重复接入情况

flume系列之:查询多个flume agent组是否有topic重复接入情况 一、查询zk节点下的flume agent组二、获取采集的topic三、获取重复接入的topic,支持设置重复接入白名单四、执行流程五、完整代码一、查询zk节点下的flume agent组 def get_flumeAgent_zkPath(zkRootPaths):for z…

如何做好小程序评论优化

用户在决定要不要用一个小程序时&#xff0c;往往会参考其他用户的评分和评论。因此小程序评论优化是提升用户互动和口碑传播的关键环节。以下是一些针对小程序评论优化的具体策略&#xff1a; 1. 优化评论区设计 确保用户能够轻松找到并访问评论区。可以在小程序的显眼位置设…

解决问题:Arcgis10.8“数据“-“导出至CAD“时就卡死了

问题现象&#xff1a;我们在使用Arcgis10.8软件&#xff0c;执行 “数据导出至CAD”操作时&#xff0c;会出现卡死的情况&#xff0c;步骤如下图所示&#xff1a; 解决方案&#xff1a;在菜单栏依次选择“地理处理”-“地理处理选项”&#xff0c;然后在“后台处理”和“发生错…

[Vue3] 10 新组件

前言 目标 1 了解fragment组件 2 掌握Teleport组件的用法 3 掌握Suspense组件的用法 4 setup什么情况下可以使用async 5 Vue3 其他的变化 #mermaid-svg-HyP0piS1ZrjpzxyE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid…

13.1 Python 正则表达式基础

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。 ⭐…

Azure健康机器人服务曝出严重SSRF漏洞,跨租户数据泄露风险被及时修复

近日&#xff0c;科研人员发现了一个服务器端请求伪造&#xff08;SSRF&#xff09;安全漏洞&#xff08;CVE-2024-38109&#xff09;&#xff0c;该漏洞允许非法访问服务内部的跨租户资源&#xff0c;有可能导致横向攻击。 Azure健康机器人服务&#xff08;Azure Health Bot …