Verilog基础:巴科斯范式(BNF)

news2024/11/20 3:32:49

相关阅读

Verilog基础专栏icon-default.png?t=N6B9https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.5482


        由于Verilog HDL标准中对语法的描述使用了Backus Naur Form(BNF)。本文将对其中的约定进行描述。

  • 小写单词,其中一些包含嵌入的下划线,用于表示语法类别。例如:module_declaration
  • 粗体字用于表示保留的关键字、运算符和标点符号,它们作为语法的必要部分。例如:module      =>       ;
  • 竖线用于分隔备选项目,除非它以粗体显示,在这种情况下,它代表自己。例如:unary_operator ::= | ! |  ~ |  & ~& |~| ~^ ^~
  • 方括号包含可选项目。例如:input_declaration ::= input [range]  list_of_variables;
  • 大括号({ })将重复项括起来,除非它以粗体显示,在这种情况下,它代表自己。大括号内的项目可能出现零次或多次;这与等价的左递归规则一样,重复从左到右发生(即用自己定义自己)。因此,以下两条规则是等效的:                                                        list_of_param_assignments ::= param_assignment  { , param_assignment }  list_of_param_assignments ::=  param_assignment | list_of_param_assignment , param_assignment
  • 如果任何类别的名称以斜体部分开头,则相当于没有斜体部分的类别名称(可以忽略斜体部分)。斜体部分旨在传达一些语义信息。例如,“msb_index”和“lsb_index”等同于“index”。

        在本文,使用过程赋值的BNF定义作为例子讲解,如下图所示。

        第一个范式首先将blocking_assignment定义为左边是variable_lvalue 中间是等号 = 而右边是可选的delay_or_event_control加上expression。

        第二个范式定义了delay_control为#加上delay_value或者#加上小括号()包围的mintypmax_expression。

        第三个范式定义了第一个范式中的delay_or_event_control,为delay_control或event_control或使用repeat语句的event_control。

        第四个范式定义了第三个范式中的event_control,为@加上hierarchical_event_identifier或@加上小括号()包围的event_expression以及Verilog2001标准新增的@(*)或@*。

        第五个范式定义了第四个范式中的event_expression,为expression,或posedge关键词加上表达式或negedge关键词加上表达式,或or连接的event_expression,或,连接的event_expression(递归定义自己)。

        最后一个范式定义了variable_lvalue可以是hierarchical_variable_identifier加上可选的[]包围的多个数组表达式索引,以及可选的最后的[]包围的位选或域选表达式,variable_lvalue还可以是使用拼接运算符{}连接起来的多个variable_lvalue(递归定义自己)。

        注意到,这里的定义中,有一些语法类别的定义并未给出,比如expression或range_expression,这些类别一般使用广泛,会在其他地方统一给出定义,可以自行查阅。

        

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/945796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安防监控/视频汇聚平台EasyCVR调用rtsp地址返回的IP不正确是什么原因?

安防监控/云存储/磁盘阵列存储/视频汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RT…

【记录】USSOCOM Urban3D 数据集读取与处理

Urban3D数据集内容简介 Urban3D数据集图像为正摄RGB影像,分辨率为50cm。 从SpaceNet上使用aws下载数据,文件夹结构为: |- 01-Provisional_Train|- GT|- GT中包含GTC,GTI,GTL.tif文件,GTL为ground truth b…

Linux学习之RAID

基础概念 RAID,英文全称为Redundant Arrays of Independent Drives,RAID,中文称为独立冗余磁盘阵列,这项技术把多个硬盘设备组合成一个容量更大的、安全性更好的磁盘阵列,把数据切割成许多区段分别放在不同的物理磁盘…

产品经理NPDP考什么?

一、准备阶段 敲黑板1:考试共200道单选,满分200,手填涂卡,150分通过。考试费3200。条件:2年以上工作经验。 敲黑板2,敲三下:备考宝典《产品经理 认证(NPDP)知识体系指南》——红宝书。 二、精…

C语言——程序执行的三大流程

顺序 : 从上向下, 顺序执行代码分支 : 根据条件判断, 决定执行代码的分支循环 : 让特定代码重复的执行

[FlareOn6]Snake 题解

这是是一个后缀为.nes的文件,NES(Nintendo Entertainment System,任天堂娱乐系统) 找到一个工具FCEUX可以打开和调试 打开十六进制编辑器观察数值的变化 发现0x25处记录了记录了吃掉苹果的个数 在这个地方打一个硬件断点 运行一…

新手入门吉他是要越贵越好吗?2023年最全面吉他选购指南,十大初学者吉他品牌推荐!【建议收藏】

全文10000字,本人亲测整理了一个多星期的成果,对比了市面上十多个吉他品牌、近50款初学者入门/进阶吉他的选材参数和销售数据,最终整理出的精华版,每个人都可以根据自己的预算找到合适的入门吉他产品。未经授权不得转载、引用、洗…

Python学习笔记:Requests库安装、通过url下载文件

1.下载安装requests库 在pipy或者github下载,通常是个zip,解压缩后在路径输入cmd,并运行以下代码 Python setup.py install 安装完成后,输入python再输入import requests得到可以判断时候完成安装 2.通过url下载文件 使用的是u…

谷歌浏览器调试技巧

一、概述 记录谷歌浏览器实用的调试技巧。 二、详解 技巧1:打开F12调试工具的前提下按下Ctrl Shift P 如下图所示,按下组合键,可打开命令面板。 技巧2:调试工具的Element面板下,按照Alt 鼠标左键可以将目标节点全部…

图解SQL查询之having

在 SQL 中,having 在分组聚合后进行条件筛选,保留满足特定条件的分组。与 where 的区别在于 where 在分组聚合前进行过滤。 以下是用到的表 例如要求出班级总年龄大于17的班级是哪些 注: 数据库服务器会自启 only_full_group_by 模式&#…

【LeetCode-中等题】98. 验证二叉搜索树

文章目录 题目方法一:BFS 层序遍历方法二: 题目 方法一:BFS 层序遍历 利用层序遍历 拿到每一个节点 并且给每一个结点配备一个最大值和最小值的队列 只要节点在最大值和最小值之间就满足二叉搜索树的条件 public boolean isValidBST(TreeNo…

2023 在Windows上的安装Faiss-GPU(使用anaconda)

该方法安装完 faiss-gpu 之后,不仅会装这个库,还会装很多依赖库。为了防止自己本地一些同名库的版本被修改,建议新建一个虚拟环境来安装。如果本地库版本修改对自己没影响,也可以忽略。 你好,我是悦创。 登录网站&…

Docker 的快速使用

ubuntu安装 centos安装 安装完毕之后执行一下这条命令,可以避免每次使用docker命令都需要sudo权限 sudo usermod -aG docker $USER阿里云docker镜像加速 DockerHub 遇到不懂或者不会使用的命令可以使用docker --help查看文档 docker --help 如: dock…

CSS按钮-跑马灯边框

思路很简单&#xff0c;实现方法有很多很多。但是大体思路与实现方法都类似&#xff1a;渐变色 动画&#xff0c;主要区别在动画的具体实现 0、HTML 结构 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><titl…

多线程网络实现在线聊天系统(详细源码)

这篇博客整理自韩顺平老师的多线程网络学习&#xff0c;在Java基础中最难的就是多线程以及网络编程了&#xff0c;如果不太熟悉的小伙伴可以跟着课程学习&#xff0c;韩老师讲得很详细&#xff0c;缺点就是太详细有点墨迹。实现后的效果是在一个类似命令行窗口进行聊天&#xf…

数论基础(II)。

数论基础&#xff08;II&#xff09;TOC 数论按照研究的数据、方法、方向不同&#xff0c;通常可以分为玄数论、素数论、和数论。无限个数&#xff0c;真正用得到的只有数头&#xff1b;数头比较重要的关限是100&#xff0c;120&#xff0c;十万&#xff0c;百亿&#xff0c;&…

【USRP】调制解调系列5:16QAM、32QAM、64QAM、256QAM、1024QAM、基于labview的实现

QAM 正交振幅键控是一种将两种调幅信号&#xff08;2ASK和2PSK&#xff09;汇合到一个信道的方法&#xff0c;因此会双倍扩展有效带宽&#xff0c;正交调幅被用于脉冲调幅。正交调幅信号有两个相同频率的载波&#xff0c;但是相位相差90度&#xff08;四分之一周期&#xff0c…

打造互动体验:品牌 DTC 如何转变其私域战略

越来越多的品牌公司选择采用DTC 模式与消费者进行互动&#xff0c;而非仅仅销售产品。通过与消费者建立紧密联系&#xff0c;DTC模式不仅可以提供更具成本效益的规模扩张方式&#xff0c;还能够控制品牌体验、获取宝贵的第一方数据并提升盈利能力。然而DTC模式的经济模型比许多…

嵌入式通用硬件模块设计——串口音频播放模块

模块功能展示&#xff1a; 串口音频控制模块 一、简介 方案为串口音频播放芯片功放芯片&#xff0c;口音频播放芯片IC为my1690-16s&#xff0c;功放为PAM8406。 1、my1690-16s 迈优科技的一款由串口控制的插卡MP3播放控制芯片&#xff0c;支持串口控制播放指定音频、音量调节…

【Unity小技巧】手戳一个简单易用的游戏UI框架(附源码)

文章目录 前言整套框架分为三大部分框架代码调用源码参考完结 前言 开发一款游戏美术成本是极其高昂的&#xff0c;以我们常见的宣传片CG为例&#xff0c;动辄就要成百上千万的价格&#xff0c;因此这种美术物料一般只会放在核心剧情节点&#xff0c;引爆舆论&#xff0c;做高…