systemverilog学习
1.数据类型1.1logic类型和双状态数据类型logic类型在实际电路中信号只有0和1两种状态但是在电路设计中能有四种状态0、1、Z和XX代表未知态当给它两个驱动时一边给0一边给1就为X当不给任何驱动时就为高阻态Z。在verilog中有两种基本的数据类型reg(变量)和wire线网reg用于存储时序和组合值包括单比特或多比特的无符号数reg[7:0]m32比特的有符号数integer64比特的无符号数time和浮点数real。reg所有存储都是静态的意味着可以存储一定时间。wire是用来连接的就像一根线一样一端变化了另一端跟着变意味着实时变化。logic regwirelogic也称为四值逻辑。唯一区别logic是单驱动例如input outputinout是多驱动1.2双状态数据类型双状态数据类型的改进优点是提高了性能减少了内存使用。最简单的双状态数据类型是bit无符号其余有符号的为byte,shortint,int,longint(无符号就是没负数)1.3定宽数组定宽数组就是宽度固定的数组。在声明时要注意把上下界写出来。Cint a[0:8];(声明9个整数[0]到[8])int b[8]声明8个整数指定宽度N那么数组里就有N个数如果指定[0:N]那么就有N1个数。1.3.1n纬数组cint c 0:703//声明一个二维数组8行4列int d84c521赋值第六行三列为10c84等于多少坐标超出边界那么SV会返回数组类型的默认值int为0,logic为X1.4数组操作赋值。int f[3] {0,1,2}; //对数组进行初始化 int g[5]; g {4,3,1,2,0}; // 为前5个元素赋值g[0:3] {5,4,3,2}; // 为前4个元素赋值 f {3{8}} // 三个数皆赋值为81.4.1for 和 foreach用法补充知识size函数可以返回数组宽度。initialbegin//声明一个initial块仿真开始执行一次bit[31:0]g[5],h[5];//g和h各5个元素皆为32位无符号比特类型for(inti0;isize函数可以返回数组宽度。 initial begin // 声明一个initial块仿真开始执行一次 bit [31:0]g[5],h[5]; // g和h各5个元素皆为32位无符号比特类型 for (int i0;isize函数可以返回数组宽度。initialbegin//声明一个initial块仿真开始执行一次bit[31:0]g[5],h[5];//g和h各5个元素皆为32位无符号比特类型for(inti0;isize(g);i)g[i]i;foreach (h[j])h[j]g[j] * 2; // h的值是g的两倍endinitial beginbyte k[4][6];foreach(k[i,j])k[i][j] i*10j;foreach(k[i]) begin //遍历第一个维度 foreach(k[,j]) //遍历第二个维度 $display(%h,k[i][j]); endendforeach用法foreach (数组名[循环变量1循环变量2……])循环变量的个数必须与数组的维度数一致。循环变量自动声明范围从该维度的 最低索引 到 最高索引注意非 C 风格 0…N-1而是数组定义时的索引范围如 [2:0] 为 2,1,0。可以省略某些维度的循环变量但需保留逗号占位。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2608853.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!