Verilog 触发器状态机语言描述-条件语句

条件语句
调试探针条件
调试探针条件可在双向或三向分支条件语句中使用。每个调试探针条件都占用调试探针连接到的 ILA PROBE 端口上
1 个触发器比较器。
重要提示 每个 PROBE 端口都可包含 1 16 个触发器比较器 在编译时配置 。这意味着根据 PROBE 端口
上配置的比较器数量 在整个触发器状态机程序中 您只能使用调试探针条件中的特定调试探针 且次数仅限 1
16 次。
调试探针条件由 1 个比较运算符和 1 个值组成。有效的调试探针条件比较运算符包括
== 等于
!= 不等于
> 大于
< 小于
>= 大于或等于
<= 小于或等于
有效值格式如下
<bit_width>'<radix><value>
其中
<bit width> 表示探针的宽度 以位数为单位
<radix> 为以下值之一
b 二进制
h 十六进制
u 无符号十进制
<value> 为以下值之一
0 逻辑 0
1 逻辑 1
X 忽略
R 0 1 转换 - 仅对 1 位探针有效
F 1 0 转换 - 仅对 1 位探针有效
B 双向转换 - 仅对 1 位探针有效
N 无转换 - 仅对 1 位探针有效
有效的调试探针条件值示例如下
1 位二进制值 0
1'b0
12 位十六进制值 7A
12'h07A
9 位整数值 123
9'u123
调试探针条件语句示例如下
• 单一位调试探针 abc 等于 0
if (abc == 1'b0) then
23 位调试探针 xyz 等于 456
if (xyz >= 23'u456) then
23 位调试探针 klm 不等于十六进制值 A5
if (klm != 23'h0000A5) then
多重调试探针条件语句示例如下
2 个调试探针比较 使用“ OR ”函数组合
if ((xyz >= 23'u456) || (abc == 1'b0)) then
2 个调试探针比较 使用“ AND ”函数组合
if ((xyz >= 23'u456) && (abc == 1'b0)) then
3 个调试探针比较 使用“ OR ”函数组合
if ((xyz >= 23'u456) || (abc == 1'b0) || (klm != 23'h0000A5)) then
3 个调试探针比较 使用“ AND ”函数组合
if ((xyz >= 23'u456) && (abc == 1'b0) && (klm != 23'h0000A5)) then
计数器条件
计数器条件可在双向或三向分支条件语句中使用。每个计数器条件都占用 1 个计数器比较器。
重要提示 每个计数器仅含 1 个计数器比较器。这意味着 在整个触发器状态机程序中 每个特定计数器在任
一计数器条件中只能使用一次。
探针端口条件由 1 个比较运算符和 1 个值组成。有效的探针条件比较运算符包括
== 等于
!= 不等于
重要提示 每个计数器位宽始终为 16 位。
有效的计数器条件值示例如下
16 位二进制值 0
16'b0000_0000_0000_0000
16'b0000000000000000
16 位十六进制值 7A
16'h007A
16 位整数值 123
16'u123
计数器条件语句示例
• 计数器 $counter0 等于二进制 0
($counter0 == 16'b0000000000000000)
• 计数器 $counter2 不等于十进制 23
($counter2 != 16'u23)
调试探针条件与计数器条件的组合
调试探针条件与计数器条件可使用如下规则组合在一起以形成单一条件
• 所有调试探针比较都必须使用相同的“ || (OR) 或“ && (AND) 运算符组合在一起。
• 组合后的调试探针可使用“ || (OR) 或“ && (AND) 运算符与计数器条件加以组合 与用于组合调试探针比较操
作的运算符无关。
包含多个调试探针和计数器条件的语句示例如下
2 个探针比较运算使用“ OR ”函数组合 然后使用“ AND ”函数与计数器条件组合
if (((xyz >= 23'u456) || (abc == 1'b0)) && ($counter0 == 16'u0023)) then
2 个探针比较运算使用“ AND ”函数组合 然后使用“ OR ”函数与计数器条件组合
if (((xyz >= 23'u456) && (abc == 1'b0)) || ($counter0 == 16'u0023)) then
3 个探针比较运算使用“ OR ”函数组合 然后使用“ AND ”函数与计数器条件组合
if (((xyz >= 23'u456) || (abc == 1'b0) || (klm != 23'h0000A5)) &&
($counter0 ==
16'u0023)) then
3 个探针比较运算使用“ AND ”函数组合 然后使用“ OR ”函数与计数器条件组合
if (((xyz >= 23'u456) && (abc == 1'b0) && (klm != 23'h0000A5)) ||
($counter0 ==
16'u0023)) then
触发器状态机语言语法
注释
• 该语言区分大小写
• 注释字符为井号“ # ”字符。包含 # 字符以及该字符后的所有内容都将被忽略。
' THING ' = THING 表示终端
{<thing>} = 0 或更多 thing
[<thing>] = 0 1 thing
<program> ::= <state_list>
<state_list> ::= <state_list> <state> | <state>
<state> ::= 'STATE' <state_label> ':' <if_condition> | <action_block>
<action_block> ::= <action_list> 'GOTO' <state_label> ';'
| <action_list> 'TRIGGER' ';'
| 'GOTO' <state_label> ';'
| 'TRIGGER' ';'
<action_list> ::= <action_statement> | <action_list> <action_statement>
<action_statement> ::= 'SET_FLAG' <flag_name> ';'
| 'CLEAR_FLAG' <flag_name> ';'
| 'INCREMENT_COUNTER' <counter_name> ';'
| 'RESET_COUNTER' <counter_name> ';'
<if_condition> ::= 'IF' '(' <condition> ')' 'THEN' <actionblock>
['ELSEIF' '(' <condition> ')' 'THEN' <actionblock>]
'ELSE' <actionblock>
'ENDIF'
<condition> ::= <probe_match_list>
| <counter_match>
| <probe_counter_match>
<probe_counter_match> ::= '(' <probe_counter_match> ')'
| <probe_match_list> <boolean_logic_op> <counter_match>
| <counter_match> <boolean_logic_op> <probe_match_list>
<probe_match_list> ::= '(' <probe_match> ')'
| <probe_match>
<probe_match> ::= <probe_match_list> <boolean_logic_op> <probe_match_list>
| <probe_name> <compare_op> <constant>
| <constant> <compare_op> <probe_name>
<counter_match> ::= '(' <counter_match> ')'
| <counter_name> <compare_op> <constant>
| <constant> <compare_op> <counter_name>
<constant> ::= <integer_constant>
| <hex_constant>
| <binary_constant>
<compare_op> ::= '==' | '!=' | '>' | '>=' | '<' | '<='
<boolean_logic_op> ::= '&&' | '||'
--- The following are in regular expression format to simplify expressions:
--- [A-Z0-9] means match any single character in AB...Z,0..9
--- [AB]+ means match [AB] one or more times like A, AB, ABAB, AAA, etc
--- [AB]* means match [AB] zero or more times
<probe_name> ::= [A-Z_\[\]<>/][A-Z_0-9\[\]<>/]+
<state_label> ::= [A-Z_][A-Z_0-9]+
<flag_name> ::= \$FLAG[0-3]
<counter_name> ::= \$COUNTER[0-3]
<hex_constant> ::= <integer>*'h<hex_digit>+
<binary_constant> ::= <integer>*'b<binary_digit>+
<integer_constant> ::= <integer>*'u<integer_digit>+
<integer> ::= <digit>+
<hex_digit> ::= [0-9ABCDEFBN_]
<binary_digit> ::= [01XRFBN_]
<digit> ::= [0-9]

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

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

相关文章

MySQL调优-01反范式化表设计

MySQL调优-01反范式化表设计 数据库设计三范式 第一范式&#xff08;1NF&#xff09;。确保数据库表的每一列都是不可分割的原子数据项&#xff0c;即列中不可包含数组、记录等非原子数据项&#xff1b;确保表中没有重复的属性或列&#xff0c;每个属性只出现一次&#xff0c;…

技术速递|介绍 .NET MAUI 社区工具包 v8 :包含 TouchBehavior 支持!

作者&#xff1a;Gerald Versluis 排版&#xff1a;Alan Wang .NET MAUI 社区工具包团队很自豪地向您介绍 .NET MAUI 社区工具包的第 8 版&#xff01; 在这个最新的主要版本中&#xff0c;我们为您带来了备受期待的 TouchBehavior&#xff08;以前称为 TouchEffect&#xff0…

Hutool 只复制不为空的属性

在使用 Hutool 的工具类进行复制时&#xff0c;有时候需要只复制不为空的属性。 比如在修改时&#xff0c;先把数据库中的数据查出来&#xff1a; SysArea sysArea getById(dto.getId());此时再以传入值复制到数据库表对象中&#xff0c;但如果传入值中有属性为null&#xf…

MM模块学习一(供应商创建,物料类型的定义及功能)

物料管理流程&#xff1a; 源头&#xff1a;采购需求->采购申请 MRP&#xff1a;物料需求计划。运行物料需求计划的结果&#xff0c;根据物料的性质来判断是外购&#xff08;采购申请&#xff09;或者是生产&#xff08;计划订单->生产订单&#xff09;。 采购申请&am…

力扣:最大子数组和

在这里和大家分享一下关于最大子数组和、最小子数组和的算法题。 其中最大子数组在力扣刷题中遇到&#xff0c;最小子数组和在笔试中遇到&#xff0c;虽然一个为最大&#xff0c;一个为最小&#xff0c;但是它们的思路完全一样&#xff0c;而且在写法上也是对称的&#xff0c;…

Termux安装某个Python包时只能pip install但是又出错的解决办法

在安装pandas时用pkg search pandas是没有内容的&#xff0c;这时候只能用pip install pandas安装&#xff0c;但是途中一定会报错&#xff0c;导致安装失败&#xff0c;解决办法是先安装tur-repo&#xff0c;即 pkg install tur-repo 然后搜索pandas&#xff0c;有pkg安装包…

Thinkphp5 中常见的session 操作方法

在 ThinkPHP 框架中&#xff0c;session 是用于在多个页面或请求之间存储用户信息的机制。以下是在 ThinkPHP 中进行 session 常见操作的一些示例&#xff1a; 启动 Session 在 ThinkPHP 中&#xff0c;通常不需要手动启动 Session&#xff0c;因为框架会在应用启动时自动处理…

在Linux中安装Docker

如果之前安装过旧版本的 Docker&#xff0c;可以使用下面命令卸载&#xff1a; yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine…

500的项目研发成本2000?

上个月接了一个小程序的二开项目&#xff0c;功能不多就2个诉求&#xff1a;调整首页数据排序规则&#xff0c;帖子详情增加一个海报&#xff0c;报了一个我认为还比较合适的价格500。 当我拿到代码的那一刻有点小害怕&#xff0c;因为这个客户的之前合作过一次&#xff0c;项…

17.接口自动化学习-日志

1.日志输出渠道 &#xff08;1&#xff09;文件格式 xx.log &#xff08;2&#xff09;控制台输出 2.日志级别 debug<info<warnning<error<critical 3.代码实现 from utils.handle_path import log_path import logging import datetime def logger(fileLogTr…

LeetCode 35.搜索插入位置

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例 2: 输入…

数值计算方法——大题题型总结

目录 一、绝对误差限、相对误差限 1.1 例题 1.2 解题套路 1.3 题解 二、敛散性、收敛速度 2.1 例题 2.2 解题套路 2.3 题解 三、牛顿迭代法 3.1 例题 3.2 解题套路 3.3 题解 四、割线法 4.1 例题 4.2 解题套路 ​4.3 题解 五、列主元素消去法 5.1 例题 5.…

|Python新手小白中级教程|第二十六章:面向对象编程(示例操作)(2)

文章目录 前言实操一、分析游戏《外星人入侵》的初始化代码实操二、自制游戏的初始化数据总结 前言 大家好&#xff0c;我是你们的BoBo仔吖&#xff0c;今天我们学习的东东是续上节课的内容。上节课我们初识对象编程操作class类&#xff0c;今天我们就来实操 实操一、分析游戏…

Ansible——playbook编写

一、简介 1.什么是playbook Ansible Playbook 是设定自动化任务的一种蓝图&#xff0c;可在无需人工干预或有限干预的前提下执行复杂的 IT 操作。Ansible Playbook 对一组或一类共同构成 Ansible 清单的主机执行。 Ansible Playbook 本质上是一些框架&#xff0c;是一些预先编…

多线程基础知识(全面):创建线程、线程状态如何变化、wait()、notify()、sleep()、停止线程

文章目录 一、创建线程的四种方式1.1 继承Thread类1.2 实现runnable接口1.3 实现Callable接口1.4 线程池创建线程1.5 补充&#xff1a;runnable、callable都可以创建线程&#xff0c;有什么区别&#xff1b;run()和 start()有什么区别 二、线程包括哪些状态、状态之间如何变化2…

第1个数据库:编号,文本,时间,

写一个数据库 编号 文本 时间1 第一个文本 有100万条数据 -- 创建一个名为texts的表格来存储数据 CREATE TABLE texts ( id INTEGER PRIMARY KEY, text TEXT, time TIMESTAMP DEFAULT CURRENT_TIMESTAMP);-- 插入数据INSERT INTO texts (text) VALUES (第一个文…

书单 | 6本AI领域名家名作,大模型时代,趁风而起!

–文末赠书– 大模型时代&#xff0c;想抓住风口吗&#xff1f; 本期书单就来分享6本AI领域名家名作&#xff0c;给大家把大模型时代那些事儿讲清楚&#xff01; 放心&#xff0c;入门的同学也可以从最基础的学起~~ 快来看看有哪些书吧…… 01 ▊《多模态大模型&#xff1…

PCIe下一代线缆标准CopprLink发布

作为业界广泛采用的高速串行点对点互联标准&#xff0c;PCIe自诞生以来历经多次迭代升级&#xff0c;现已成为CPU、GPU、FPGA、SSD等计算设备间不可或缺的互连桥梁。PCIe 7.0标准更是将数据传输速率提升至令人惊叹的32 GB/s&#xff08;每通道&#xff09;。 然而&#xff0c;面…

JS_监听dom变化触发,new MutationObserver

MutationObserver 是一个用于监测 DOM 变化的接口&#xff0c;它提供了一种机制来异步观察在特定元素或文档中发生的 DOM 变化。 MutationObserver 的作用包括&#xff1a; 1.监测 DOM 变化&#xff1a;你可以创建一个 MutationObserver 实例&#xff0c;并指定一个回调函数。…

js中对象转数组常用的方法

对象转数组 有多种方法可以将对象转换为数组&#xff0c;以下是其中一些常用的方法&#xff1a; Object.keys()和map()方法&#xff1a; const obj {a: 1, b: 2, c: 3}; const arr Object.keys(obj).map(key > obj[key]); console.log(arr); // [1, 2, 3] Object.value…