Verilog学习笔记

Verilog

基础结构

module 模块名(参数1,参数2,....)
input 参数1,...
output 参数X,...
endmodule

端口定义输入输出 input,output,inout
默认为wire型变量
其中output可额外设置成为reg型的变量
(reg作用:保存数据)

代码风格

门级 gate
数据流 assign 连续赋值
行为 always,initial

函数

$display 打印
$monitor 监视变量变化打印
$time 时间
$random

编译器指令

`timescale 延迟精度
`include
`define

变量类型

整型
位数 `进制 数

位数没指定则一般为32位及以上
进制为o八 b二 d十 h十六 [不区分大小写]
数可含有 正常数字 x未知 z高阻 [不区分大小写]

符号位有两种情况:

  1. 在开头,如 -8`d5
  2. 在进制, 如 `sb1011 这里s表示有符号 [不区分大小写]
字符串

reg[数字1,数字2]
其长度=数字1-数字2+1;

数据类型

wire 线网变量

默认1位
赋值:只能用连续赋值语句assign

reg 寄存器变量

保存最后一次赋值结果
默认一位
赋值:只能always或者initial

其他变量 Integer,time,real,Array

操作符

省略不写

代码

延迟控制#

#具体数字X 表示延迟X个单位时间

事件控制 @(事件控制类型 变量名)

多个控制用or连接
事件控制类型:
可以不写:变量发生变化就会执行语句
posedge:上升沿执行语句
negedge:下降沿执行语句

执行语句
begin #单位时间 end

顺序执行语句

fork #单位时间 end

并行执行语句

过程性赋值
堵塞 =
非堵塞 <=
连续 assign
判断
if else
case endcase

casez z,? 无关位
casex x,z,? 无关位

循环控制
forever 无线循环
repeat 循环指定次数
while for

行为风格代码

intial 立即执行
always

always可用于产生时钟脉冲,如下生成时钟周期为20的波形

always 
#10 clock=~clock;

always监听变量变化执行

always @ (变量一 or 变量二 or ...)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值