我是靠谱客的博主 无限金针菇,最近开发中收集的这篇文章主要介绍verilog中reg,integer的使用规则1. verilog中常用的数据类型2.integer使用规则,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
verilog中reg,integer的使用规则
1. verilog中常用的数据类型
Verilog中共有19种数据类型。
1)基本的四种类型:
reg型、wire型、integer型、parameter型。
其他类型:large型、medium型、small型、scalared型、time型、tri型、trio型、tril型、triand型、trior型、trireg型、vectored型、wand型和wor型。
这14中数据类型除time外都与基本逻辑单元建库有关。
2)四种基本类型区别:
reg 无符号整数变量,可以选择不同的位宽。
integer 有符号整数变量,32位宽,算术运算可产生2的补码。
real 有符号的浮点数,双精度。
time 无符号整数变量,64位宽(Verilog-XL仿真工具用64位的正数来记录仿真时刻)
用 reg 描述逻辑,integer 描述循环变量和计算, real 在系统模型中使用,time 和 realtime 保存测试装置的仿真时间。
2.integer使用规则
1)reg是无符号整形变量,integer是有符号类型
2)integer定义为32bit的总线
3)for循环变量需要使用integer类型
请小心使用小型宽度的 reg 作为循环变量 测试负值的 reg 也要非常小心 如果重复的加 减运算和reg 的值都作为无符号数处理 循环表达式就永远不会出错
reg [2:0] i; // i 的值永远在 0 到 7 之间
...
for ( i=0; i<8; i=i+1 ) // 循环不会停止
...
for ( i=-4; i<0; i=i+1 ) // 不会执行
...
在像上面的情况中 循环变量 i 应该用 integer 类型
下面的代码显示reg和integer的一般用法:
integer i;
reg [15:0] V;
reg Parity;
always @(V)
for ( i = 0; i <= 15; i = i + 1 )
Parity = Parity ^ V[i];
4)文件读写时使用integer类型来简化代码操作
///save data to files1
parameter N = 4;
integer file_ceo_id [N-1:0]; //注意此处变量正确定义方式
initial begin
file_ceo_id[0] = $fopen("./ctrl_data0.txt","w");
file_ceo_id[1] = $fopen("./ctrl_data1.txt","w");
file_ceo_id[2] = $fopen("./ctrl_data2.txt","w");
file_ceo_id[3] = $fopen("./ctrl_data3.txt","w");
end
genvar i;
generate
for (i=0;i<N;i=i+1)
begin:W_FILES ///
always@( posedge clk)
begin
if (rd_valid == 1'b1)
begin
$fdisplay(file_ceo_id[i], "%h", out_fifo_rdata);
end
end
end
endgenerate
仿真时变量值显示如下:
最后
以上就是无限金针菇为你收集整理的verilog中reg,integer的使用规则1. verilog中常用的数据类型2.integer使用规则的全部内容,希望文章能够帮你解决verilog中reg,integer的使用规则1. verilog中常用的数据类型2.integer使用规则所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复