【硬件木马项目】第一篇:数据处理之Verilog HDL语言
本项目数据为门级网表数据,来源于Trust-Hub数据集,有若干个基准电路,这些门级网表电路的编写语言为Verilog HDL语言。
本文主要首先提及一下Verilog HDL语言的基本语法,然后以几个电路的代码为例,解析一下该电路代码中包含的电路数据。
目录
一、Trust-Hub数据集知识
二、Verilog HDL基本语法
2.1 基本语法概述
2.2 变量
1. nets:连线形
2. register:寄存器类型变量
2.3 运算符
1. 逻辑运算符
2. 位运算符
2.4 语句
1. 语句概述
2. 详解
3. 举例
一、Trust-Hub数据集知识
(1)门级网表是指组成电路原件的是逻辑门或者与逻辑门同级别的电路元件,这些组电路的逻辑门原件通过线网连接;
(2)电路的逻辑结构由Verilog HDL编程语言编写,以module开始,以endmodule结束,中间定义电路的输入输出,各个端口以及所有线网名称;
(3)需要对门级网表的电路结构抽象为有向图模型后才能进行特征提取;
(4)数据举例如下:
——以下为将门级网表抽象为有向图的示例:
——门级网表数据举例如下所示:
二、Verilog HDL基本语法
2.1 基本语法概述
(1)output,input 关键字指定(整个电路门)输入输出;
(2)always @(posedge/negedge clk) 语句,每当clk出现上升/下降沿时,就执行接下来的语句块(并行赋值,非阻塞式赋值<=)。这种语句构成时序逻辑,当前输出与上一个时刻的值有关。
(3)reg类变量用<=赋值,左侧寄存器,右侧新的值;
(4)&q语句输出数字q每一位相与的结果(0/1);
(5)wire类型只是一根导线,只能用来组合逻辑;
(6)assign,过程赋值语句,使用 " = ",语句等号右侧改变,等号左侧立刻得到结果;
(7)always,连续赋值语句,使用 " <= ",语句块里面的值是并行改变,且只能在@号后面的条件满足的时刻改变;
(8)intial语句后面跟begin-end语句块,初始化语句;
(9)时序逻辑:<=赋值;组合逻辑:=赋值;
2.2 变量
两种类型,nets和register:
1. nets:连线形
一个单纯的变量,使用 " = " 赋值;
wire为最常见的nets型变量;
(1)常用来表示assign语句赋值的组合逻辑信号;
(2)取值为:0,1,x(不定值),z(高阻);
2. register:寄存器类型变量
在always语句里使用 " <= " 赋值;
最常用的是reg;
2.3 运算符
主要注意逻辑运算符和位运算符:
1. 逻辑运算符
&&(与),||(或),!(非)
——前两个是双目,最后一个是单目;
2. 位运算符
~(按位非),&,|,^(按位异或)
其余参考博客:Verilog HDL | 简介与基本语法 - 简书
2.4 语句
1. 语句概述
(1)赋值语句:连续赋值语句assign,过程赋值语句always @(敏感列表);
(2)循环语句:forever,repeat,while,for;
(3)结构说明语句:initial,always,task,function;
(4)编译预处理语句:define,include,timescale;
2. 详解
(1)always语句块
always @(<敏感信号表达式>)
begin
...
end
——敏感信号表达式前加posedge和negedge关键字可指定上升沿或者下降沿触发,采用并行赋值<=方法,寄存器变量reg;
——里面赋值语句采用非阻塞赋值<=;
(2)initial语句块
——一个初始化的语句块,上机即执行;
(3)连续赋值assign语句块
——连续赋值语句块,顺序执行;
——对wire类型变量进行赋值,即时改变;
(4)过程赋值语句
——一般在always语句块;
——常用于对reg变量赋值;
——阻塞赋值 " = " 和非阻塞赋值 " <= " ;
3. 举例
(1)例1:always语句块
always @(posedge clk) //当该时钟信号满足,类似于一个判断语句if(cnt==4'd15) //4'd15表示4位十进制数,15t_en<=1'b1; //1'b1表示一位二进制数,1elset_en<=1'b0; //1'b0表示一位二进制数,0
assign f=t_en&f_m;
(1)句中always为连续赋值语句,@引导一个敏感列表;assign是过程赋值语句。
(2)句中<=和=都是赋值语句,分别为非阻塞式赋值和阻塞式赋值。
——非阻塞式赋值方式为:b<=a,常用于编写综合的时序逻辑模块
——非阻塞式赋值就像D触发器那样,需要等到下一次always里面的敏感事件满足,再次执行always块程序的时候赋值才能成功(即类似于一个判断条件的赋值语句);且语句是并行执行的;
——阻塞式赋值,赋值语句执行后,值立马改变;且语句是顺序执行的;
(2)例2:always的并行执行
// For e.g.
...
always @(posedge clk)
beginb <= ac <= b
end
...
// 上升沿来前,假设b=1,a=2
// 则上升沿来时,b=2,c=1,即c获得b的旧值
// 原因是非阻塞赋值下,两个赋值语句并行执行
// 若将<=全部改为=,则c=2,因为阻塞赋值是顺序执行的
对于过程赋值语句,如果是边沿触发,我们在
always
语句块里用 <=
赋值,期望综合后生成寄存器;如果是电平触发,那么这个语句块实际上描述的是一段组合逻辑,我们使用 = 赋值,期望综合后不使用寄存器,而生成一个组合逻辑电路。
详细语法知识可参考下面两篇博客:
第一篇:Verilog HDL | 简介与基本语法 - 简书
第二篇:Verilog HDL的基本语法_~动次~打次~动次~打次~-CSDN博客_verilog ~
【硬件木马项目】第一篇:数据处理之Verilog HDL语言相关推荐
- Verilog HDL 语言基础语法
模块的结构 (1)Verilog的基本设计单元是"模块"(block). (2)一个模块由两部分组成,一部分描述接口,另一部分描述逻辑功能. (3)每个Verilog程序包括4个主 ...
- 数字时钟计数器(Verilog HDL语言描述)(仿真和综合)
目录 前言 主题 Verilog HDL设计代码 测试代码 仿真波形 ISE中综合 RTL Schematic Technology Schematic 前言 数字时钟计数器和我的前一篇博文:级联模6 ...
- Verilog HDL 语言基础
目录 前言 一.Verilog HDL模块基本结构 1.模块声明&端口定义&数据类型声明 二.数据类型 1.信号状态 2.整数 2.1.标准形式 2.2.补充 3.实数 4.字符串 三 ...
- 有限状态机设计实例之空调控制器(Verilog HDL语言描述)(仿真与综合)(附用Edraw(亿图)画状态转移图)
目录 前言 空调控制器 简介 状态转移图如下: Verilog HDL语言描述 测试文件 仿真图 ISE综合 RTL Schematic Technology Schematic 前言 关于工具的使用 ...
- 级联模60计数器(Verilog HDL语言描述)(仿真与综合)
目录 前言 模60计数器 Verilog HDL语言描述 测试文件 仿真波形 RTL Schematic Technology Schematic 前言 看这篇文章前,推荐先看看模10计数器和模6计数 ...
- 模6计数器以及模10计数器(Verilog HDL语言设计)(Modelsim仿真与ISE综合)
目录 前言 模6计数器 Verilog HDL语言描述 测试文件 仿真电路图 RTL Schematic Technology Schematic 模10计数器 Verilog HDL语言描述 测试文 ...
- 通过仿真和综合认识T触发器(Verilog HDL语言描述T触发器)
这个系列的博文已经写过了两篇,分别是通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)和通过仿真和综合认识JK触发器(Verilog HDL语言描述JK触发器),分析的方法是完全并行 ...
- 通过仿真和综合认识JK触发器(Verilog HDL语言描述JK触发器)
上篇博文写了用仿真和综合来认识D触发器(通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)),这篇博文采用完全并行的方式来认识JK触发器. 让我们迅速进入正题吧. J-K触发器的Ve ...
- Verilog HDL语言要素
Verilog HDL语言要素 Verilog HDL的基本要素,包括标识符.空白符.注释.数值和字符串.数据类型及运算符等. 标识符 Verilog HDL中的标识符(identifier)可以是任 ...
最新文章
- 自然语言处理NLP之主题模型、LDA(Latent Dirichlet Allocation)、语义分析、词义消歧、词语相似度
- mysql中一个表最多能有几个auto_mysql--一个表上可以指定几个auto_increment
- 外媒列举2011年十大IT预测:鲍尔默卸任微软CEO
- 径向基函数插值(1)
- android 短信注册,Android注冊短信验证码功能
- SQL基础-- 数据处理(DML、RETURNING、MERGE INTO)
- js立即执行函数_《JS 函数的执行时机》
- 三种方法让你的Service不被“一键加速”和系统杀掉
- org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates
- 数据保存(永久保存)方式
- 红外遥控风扇改手机APP远程控制杂记
- 清差额征税和简易计税的适用情形
- css超出显示...(单行、多行)
- 手机射频技术和手机射频模块基础解读
- Matlab利用函数句柄实现函数嵌套
- 【My Electronic Notes系列——组合逻辑电路】
- 关于CCleaner 卸载程序删除所有软件文件的现象
- 在Ubuntu中安装Android投屏软件scrcpy
- java监理的职责,监理工作总结应包括( )等主要内容。
- webRTC sdp b=AS:600 x-google-min-bitrate 带宽码率那些事
热门文章
- python制作手机软件_python可以写APP吗(python能做手机软件吗)
- 远程启动UFT/QTP 注意事项
- 银行家算法判断状态是否安全
- 网络计划---网络计划图
- Win10开启快速启动后关机变重启
- Js逆向-猿人学(2)动态cookie
- 网络安全工程师和网络工程师一样吗(网络安全工程师与网络工程师)
- 操作简单,易上手的三款在线ps处理工具
- 计算机培训校本研修心得,校本研修经验总结
- 2021汕头砺青中学高考成绩查询,@汕头高考考生:今天18:00起推送成绩 18:30起可查询成绩...