Verilog语法之数学函数
Verilog-2005支持一些简单的数学函数,其参数的数据类型只能是integer和real型。
Integer型数学函数
$clog2是一个以2为底的对数函数,其结果向上取整,返回值典型的格式:
integer result;
result = $clog2(n);
最典型的应用就是通过参数化的方式来求某个变量的位宽,在另一篇文章已经对用法做了详细的介绍:Verilog设计中如何匹配变量的位宽?($clog2系统函数)
Real型数学函数
其参数数据类型为real型,返回值同样为real型,这意味着下面这些数学函数都无法被综合:
Function | Description |
---|---|
$ln(x) | N自然对数(以e为底的对数) |
$log10(x) | 十进制对数(以10为底的对数) |
exp(x) | e^x ,e=2.718281828... |
sqrt(x) | 开平方 |
$pow(x, y) | x^y |
$floor(x) | 向下取整 |
$ceil(x) | 向上取整 |
$hypot(x, y) | sqrt(xx + yy)。对两个数平方和开平方 |
$sin(x) | sin |
$cos(x) | cos |
$tan(x) | tan |
$asin(x) | arcsin |
$acos(x) | arccos |
$atan(x) | arccos |
$atan2(x, y) | x/y的反正切 |
$sinh(x) | 双曲正弦 |
$cosh(x) | 双曲余弦 |
$tanh(x) | 双曲正切 |
$asinh(x) | 反双曲正弦 |
$acosh(x) | 反双曲余弦 |
$atanh(x) | 反双曲正切 |
写个简单的testbench到modelsim验证一下:
module tb_math_fuc;real x, y; //这些函数的参数需要是real类型,返回也是real类型initial begin //0.3f表示取小数点后3位,下同x = 10000;$display("$log10(%0.3f) = %0.3f", x, $log10(x)); //以10为底的对数 x = 1;$display("$ln(%0.3f) = %0.3f", x, $ln(x)); //以e为底的对数x = 2;$display("$exp(%0.3f) = %0.3f", x, $exp(x)); //e^xx = 25;$display("$sqrt(%0.3f) = %0.3f", x, $sqrt(x)); //开平方x = 5;y = 3;$display("$pow(%0.3f, %0.3f) = %0.3f", x, y, $pow(x, y)); //x^yx = 2.7813;$display("$floor(%0.3f) = %0.3f", x, $floor(x)); //向下取整x = 7.1111;$display("$ceil(%0.3f) = %0.3f", x, $ceil(x)); //向上取整x = 30 * (22.0/7.0) / 180;$display("$sin(%0.3f) = %0.3f", x, $sin(x)); //sin函数x = 90 * (22.0/7.0) / 180;$display("$cos(%0.3f) = %0.3f", x, $cos(x)); //cos函数x = 45 * (22.0/7.0) / 180;$display("$tan(%0.3f) = %0.3f", x, $tan(x)); //tan函数x = 0.5;$display("$asin(%0.3f) = %0.3f rad, %0.3f deg", x, $asin(x), $asin(x) * 7.0/22.0 * 180);//arcsin函数x = 0;$display("$acos(%0.3f) = %0.3f rad, %0.3f deg", x, $acos(x), $acos(x) * 7.0/22.0 * 180); //arccos函数x = 1;$display("$atan(%0.3f) = %0.3f rad, %f deg", x, $atan(x), $atan(x) * 7.0/22.0 * 180); //arctan函数endendmodule
这是验证结果:
Verilog语法之数学函数相关推荐
- verilog语法学习目录
verilog语法实例学习(1) Verilog中注释 Verilog代码中的信号 标识符 信号的值 Verilog中的数字 Verilog中的参数 verilog语法实例学习(2) 线网类型 变量类 ...
- [转]verilog语法学习心得
verilog语法学习心得 1.数字电路基础知识: 布尔代数.门级电路的内部晶体管结构.组合逻辑电路分析与设计.触发器.时序逻辑电路分析与设计 2.数字系统的构成: 传感器 AD 数字处理器 D ...
- 探索Julia(part6)--基本命令与数学函数
学习笔记,仅供参考,有错必纠 参考自:Julia数据科学应用–Zacharias Voulgaris 使用Julia-1.1.1 基本命令与数学函数 基本命令与函数 print与println pri ...
- matlab的数学函数,matlab中常见数学函数的使用
matlab中常见数学函数的使用 MATLAB 基本知识 Matlab 的内部常数 pi 圆周率 exp(1) 自然对数的底数 e i 或 j 虚数单位 Inf 或 inf 无穷大 Matlab 的常 ...
- SQL Server数学函数
数学函数 1.计算绝对值ABS ABS函数对一个数值表达式结果计算绝对值(bit数据类型除外),返回整数. 语法结构: ABS(数值表达式) 返回值:与数值表达式类型一致的数据 示例: SELECT ...
- vb怎么判断整数_VB数学函数大全
Hello大家好,从本节课程开始,我们开启了新的篇章--VB常用内置函数.在VB6.0中,有很多的内置函数,利用好这些函数可以轻松地实现许多功能,减少代码编写量,使程序设计效率更上一层楼.在本章节,我 ...
- 使用函数求最大公约数 pta_13个数学函数应用技巧解读,易学易懂,远离数学计算困扰...
Excel中的函数种类很多,其中有一类为数学函数,如果能够熟练掌握,将会远离数学计算的困扰,提高工作效率. 一.Excel数学函数:Sign. 功能:确定数字的符号,如果为正数.则返回1:如果为0,则 ...
- pythonmathcot函数_NumPy数学函数介绍和用法
本文概述 Numpy包含大量数学函数, 可用于执行各种数学运算.数学函数包括三角函数, 算术函数和用于处理复数的函数.让我们讨论一下数学函数. 三角函数 Numpy包含三角函数, 用于计算弧度中不同角 ...
- SQL Server 数据库之数学函数
数学函数 1. 概述 2. ABS 函数求绝对值 3. Pi 函数求圆周率 4. Power 函数 5. Rand 函数 6. Round 函数 7. Square 函数和 Sqrt 值 7.1 Sq ...
最新文章
- python 错误--UnboundLocalError: local variable '**' referenced before assignment
- 使用gevent启动bottle web框架
- [C++11]继承构造函数
- python日志输出 超量 停止_linux 内存分配参数导致的 buffer_pool 分配不出来的问题排查...
- GCN-Based User Representation Learning for Unifying Robust Recommendation and Fraudster Detection
- 如何优化代码和RAM大小
- oracle升级后出现 ora-02055,分布式更新失败 0ra-02055错误 请各位指点(在线等待)...
- 【debug】requests.exceptions.ChunkedEncodingError: (‘Connection broken: IncompleteRead(0 bytes read)‘
- 下载、安装Keil 5
- 多线程python实现方式_python多线程的两种实现方式(代码教程)
- 编程语言不仅仅是工具而已
- 〖Python〗-- 模块与包
- 用JS做关灯游戏(初级)
- 急需能临时发邮件的临时邮箱 临时邮箱怎么注册 邮箱163注册入口在哪
- 分库分表知识详解与分库分表中间件介绍
- Sphinx/coreseek/mysql全文检索
- AutoCAD2014官方原版软件下载
- 小牛电动股权曝光:李彦持股4.4% 李一男持股降至28.1%
- 手机dlna到linux,linux dlna服务器
- 【蓝桥杯-单片机学习笔记(三)】共阳数码管的静态显示