【野火FPGA】Verilog的基本语法-笔记-1

初识Verilog HDL

Verilog HDL的简介

Verilog HDL 是一种硬件描述语言,以文本的形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能

Verilog相比VHDL

Verilog

语法自有,易学易用

适合算法级、门级设计

代码简洁

发展较快

VHDL

语法严谨,难以上手

适合系统级设计

代码冗长

发展缓慢

Verilog 基础语法

逻辑值

0:逻辑低电平,条件为假

1:逻辑高电平,条件为真

z:高阻态,无驱动

x:未知的逻辑电平

算数运算符

+(加法,如assign c = a+b;就是把a与b的和赋给c)

-(减法,如如assign c = a-b;就是把a与b的差赋给c)

*(乘法,如如assign c = a乘以3;结果赋给c)

/(除法,如如assign c = a/2;结果赋给c,一般不会用除号)

%(求模,或者称为求余,要求%两侧均位整形数据,5%3的值为2,用在测试文件)

module

endmodule模块的开始和结束

输入信号的关键词和输出信号的关键词是input和output

还有一种既可以是输入信号还可以是输出信号inout比如i2C中的sda可以作为指令的输入也可以作为指令的输出

变量分为两种类型:

一种是wire型变量(可以看成直接的连接)会被映射为真实存在的物理连线;

一种是寄存器变量reg,具有对某一个时间点保持状态的功能,会被映射成真实的寄存器;

//参数

parameter 可以在模块的实例化中修改

 

localparam 只能在模块内部使用不能被实例化

常量

基数表示法

默认的位宽是32bit的数

 

阻塞赋值和非阻塞赋值

例如

//阻塞赋值
a = 1;
b = 2;
c = 3;
begin
 a = b;
 c = a;
end
//结果
//a = 2;
//b = 2;
//c = 2;
//非阻塞赋值
a = 1;
b = 2;
c = 3;
begin
 a <= b;
 c <= a;
end

//a = 2;
//b = 2;
//c = 1;

归约运算符、按位运算符

以"&"操作符位例子,"&"操作符有两种用途,既可以作为一元运算符(仅有一个运算的量),也可以作为二元运算符(有两个参与运算的量)。

当"&"作为一元运算符时表示归约与,&m试将m中所有比特相与,最后的结果是1bit。

 

逻辑运算符

 

关系操作符

 

移位运算符

 

 

位拼接运算符

 

条件运算符

 

优先级

if else

 

 

但是这个语句会产生latch,不推荐

case

 

case分支语句通常用来表示有限状态机的描述

系统函数

 

‘timescale 1ns/10ps

 

那么就是1ns/10ps = 0.01ns ,延时得更加精确

 

但是时间单位不能比时间的精度小

 

 

inital只真仿真的文件中使用,是不可综合的

和write区别就是一display可以自动换行

而write必须用换行符

$strobe也是输出打印信息只不过在最后输出

 

4.$monitor用于持续检测变量

 

$monitor("%b+%b=%d",a,b,c);

任何一个变量改变都会执行一次

用于暂停仿真,finish用于结束仿真

 

 

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幸幸有狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值