Verilog支持乘除运算。
01.常规数据注意数据的位宽,防止数据溢出。代码处理结果一般都是四舍五入的整数。
02.浮点数据(例如0x3f800000表示1)支持小数运算结果,具体精度与选取数据的小数部分位宽有关系。Vivado软件里有一个floating的IP支持该种运算,Quartus-ii不清楚。同时vivado里还可以调用DSP48进行数据运算。
03.常规数据可以表示小数,例如16bit位宽的数据,高八位表示整数,低八位表示纯小数。具体整数/纯小数的位宽自己定义。
04.为了提高运算速度(会导致占用更多资源)一般都会对数据进行位宽拆分,这个自己百度。
05.建议自己仿真一下。
- //-----------------------------------------------------------
- wire [31:00] test_1 ;
- wire [31:00] test_2 ;
- wire [31:00] test_3 ;
- wire [31:00] test_4 ;
- // wire real [31:00] test_5 ;
- real test_5 = 3.1415926 ;
- wire [31:00] test_6 ;
- wire [31:00] test_7 ;
- wire [31:00] test_8 ;
- wire [31:00] test_9 ;
- reg [00:00] ena ;
- reg [31:00] mem_addra ;
- //-----------------------------------------display //下列描述不符合语法规则会报错
- parameter PI = 3.1415926 ;//PI // parameter PI = 32'd3.1415926 ;//PI
- parameter A = 3.61E2 ;//361.0 // parameter A = 32'd3.61E2 ;//361.0
- parameter B = 3.61E-3 ;//0.00361 // parameter B = 32'd3.61E-3 ;//0.00361
-
- assign test_1 = PI ;// 3
- assign test_2 = A ;// 361
- assign test_3 = B ;// 0
- assign test_4 = PI * 1000 ;//3142
- assign #1000 test_6 = test_1 * 1000 ;//3000
- assign test_7 = 3 / 2.0 * 1000 ;//1500
- assign test_8 = 0.9001 / 4.5 * 1000 ;//200
- assign test_9 = (0.9001 / 4.5 + 3/2.0) * 1000 ;//1700
Verilog支持乘除运算。
01.常规数据注意数据的位宽,防止数据溢出。代码处理结果一般都是四舍五入的整数。
02.浮点数据(例如0x3f800000表示1)支持小数运算结果,具体精度与选取数据的小数部分位宽有关系。Vivado软件里有一个floating的IP支持该种运算,Quartus-ii不清楚。同时vivado里还可以调用DSP48进行数据运算。
03.常规数据可以表示小数,例如16bit位宽的数据,高八位表示整数,低八位表示纯小数。具体整数/纯小数的位宽自己定义。
04.为了提高运算速度(会导致占用更多资源)一般都会对数据进行位宽拆分,这个自己百度。
05.建议自己仿真一下。
- //-----------------------------------------------------------
- wire [31:00] test_1 ;
- wire [31:00] test_2 ;
- wire [31:00] test_3 ;
- wire [31:00] test_4 ;
- // wire real [31:00] test_5 ;
- real test_5 = 3.1415926 ;
- wire [31:00] test_6 ;
- wire [31:00] test_7 ;
- wire [31:00] test_8 ;
- wire [31:00] test_9 ;
- reg [00:00] ena ;
- reg [31:00] mem_addra ;
- //-----------------------------------------display //下列描述不符合语法规则会报错
- parameter PI = 3.1415926 ;//PI // parameter PI = 32'd3.1415926 ;//PI
- parameter A = 3.61E2 ;//361.0 // parameter A = 32'd3.61E2 ;//361.0
- parameter B = 3.61E-3 ;//0.00361 // parameter B = 32'd3.61E-3 ;//0.00361
-
- assign test_1 = PI ;// 3
- assign test_2 = A ;// 361
- assign test_3 = B ;// 0
- assign test_4 = PI * 1000 ;//3142
- assign #1000 test_6 = test_1 * 1000 ;//3000
- assign test_7 = 3 / 2.0 * 1000 ;//1500
- assign test_8 = 0.9001 / 4.5 * 1000 ;//200
- assign test_9 = (0.9001 / 4.5 + 3/2.0) * 1000 ;//1700
2
1
举报