数字ic day1(2)

这篇博客详细介绍了Verilog和SystemVerilog的语法规则,包括数据格式表示、各种操作符的使用,如按位与、异或、或等,并探讨了自定义类型和类型强制转换的方法。此外,还阐述了顺序控制结构,如条件判断、循环以及等待语句的使用。同时,对比了task和function的区别,强调了它们在仿真时间和参数传递上的特性。最后,提到了系统函数中的随机化方法,如$random和$urandom。
摘要由CSDN通过智能技术生成

注释、语法规则、操作符的含义、强制类型的转换、流程控制

一、语法规则

和verilog一样(大小写敏感、空格不忽略)

数据格式 <size>'<base><number>

二、操作符

&按位与/缩减与^缩减异或
&~按位与非~^缩减同或
~&缩减与非?:三元操作符
|按位或/缩减或{}拼接符
|~按位或非
~|缩减或非
===条件等于==逻辑等于
!==条件不等于!=逻辑不等于
==?通配符条件等于
!=?通配符条件不等于

三、自定义类型和类型强制转换

使用typedef为一个数据类型创建符号

使用<tyoe>'(<value>|<variable>)

Type Casting

         阻塞赋值: =

        非阻塞赋值:<=

        type'(expression)

四、顺序控制

条件:if...else, ?, assert(), case    endcase

        verilog中循环变量必须在for语句之外声明,当前循环与其他语句相互影响

        systemverilog可以在for循环内部声明循环变量,变量为本地唯一,与外部同名变量不冲突,本地循环变量都是自动化的(automatic)

循环:repeat(expr),for(),foreach(expr),while,do...while,break,continue

五、等待语句:@,wait,#

@ event_expression

        等待事件发生才继续执行后面的程序

        event_expression可以是信号变量、上升沿、下降沿、事件变量

wait(exoression):不可综合

延迟信息

        #2:延迟2个仿真时间单位('timescale 1ns/100ps),不可综合

六、verilog task和function

task

task含有input、output、inout语句

task消耗仿真时间

        延迟:#20

        时钟周期:@(posedge clock)

        事件:event

task task_name;

        parameters

        input declarations

        output declaeations

        reg  declaeations

        ...text body...

endtask


 

function

函数执行不消耗仿真时间

函数中不能有控制仿真时间的语句

        不能有仿真时间延迟:#100 ('timescale 1ns/10ps)

        不嫩有阻塞语句:@(posedge clk) 或者 wait(ready)

        不能调用task

void function没有返回值

        Verilog function必须有一个返回值

funtion [range] funtion_name;

        parameters

        input declarations

        reg declaeations

        ...code body...

endfunction

tasks和function

        不需要使用begin...end语句

        增加了return语句

        void function没有返回值

        function可以有output和inout作为形式参数

return 语句

        Systemverilog 增加了return语句

                return语句执行时返回表达式的值,否则最后返回数值赋值给函数名

                return语句用于退出task和function

使用引用(reference)替代复制的方式传递参数

        常见的向task和function传递参数值的方法是复制

        使用引用的方式显示的向任务和函数传递参数

                关键字是:ref (取代了input,ouput或者inout)

                只有自动(automatic)任务和函数才能使用ref参数

七、系统函数:随机化 randomization

$random(seed);//传递参数seed,返回一个32-bit的有符号随机数

$urandom(seed);//传递参数seed,返回一个32-bit的无符号随机数

$urandom(min,max);//生成有一定范围的无符号随机数

randcase...endcase//选择有权重的可执行语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值