当前位置: 首页 > news >正文

FPGA学习篇——Verilog学习特别篇1(实现功能篇)

这里主要记录一些我学到的用Verilog语言实现功能的编写思路(后续可能会不定时更新)。

一:生成随机电平

以第一句为例:

使用always语句每隔10ns不断执行:top_in1每隔10ns就会被赋值0或者1,即生成了随机电平。(使用random生成随机数后对2取模,则只能结果为0或者1)

二:定时打印仿真输出

常用于仿真文件中打印出一些信息方便查看。

使用方法如下:在initial语句中使用$timeformat设置打印出的时间的格式,使用monitor实时打印。

initial begin
  $timeformat(-9,0,"ns",10);
  $monitor("@time %t:,a=%b,b=%b,sum=%b,count=%b",$time,top_a,top_b,top_sum,top_count);
end

1. $timeformate用法

$timeformat(时间单位, 打印时间到小数点后几位, 与时间单位相对应单位名, 打印字符长度);

  • 时间单位:取值为0~15之间,代表10的负几次方。即:0 表示秒,-3 表示毫秒,-6 表示微秒,-9 表示纳秒, -12 表示皮秒, -15 表示飞秒;中间值也可以使用:例如-10表示以100ps为单位。其默认值为`timescalse所设置的仿真时间单位。
  • 打印时间到小数点后几位: 是在打印时间值时,小数点后要保留的位数。其默认值为0
  • 与时间单位相对应单位名: 这里一般与前时间单位对应,如上述例子中,时间单位处填-9代表纳秒,这里就填“ns” 。其默认值为空字符串。
  • 打印字符长度: 是指打印时间这部分的字符串的长度。表示时间值字符串的后面加上一个" ns"字符串的长度。

如下例子,上图为设置字符串长度为6,下图设置为10。

以上图为例子,时间值和" ns"合起来的字符串长度如果不足6个字符的话,就在这部分字符串的前面补空格,使得这部分字符串总长度为6个字符;如果这部分字符串长度超过了6个字符,那就不补空格了。

(2) 打印时间

使用$monitor等打印函数打印时间时用%t表示存放时间的位置,对应将$time存放进来。

PS:$monitor 的使用方法之前文章提到过,就不再说了

(3)该方法常用于仿真模块使用,故打印系统函数中应该用得是顶层模块定义的端口而不是子模块的端口。

相关文章:

  • 神经网络为什么要用 ReLU 增加非线性?
  • CI/CD—Jenkins、Maven安装
  • 【Java代码审计 | 第八篇】文件操作漏洞成因及防范
  • 深入解析 JavaScript 原型与原型链:从原理到应用
  • 10.2 继承与多态
  • NoSQL数据库系统Cassandra学习笔记
  • 游戏分析:h5页游
  • C++20 概念库:提升模板编程的可读性与安全性
  • 深入了解Linux —— 调试程序
  • 《C++ STL容器适配器:stack和queue的实现机制与应用场景》
  • nvm list available为空
  • K8S学习之基础十九:k8s的四层代理Service
  • Python - 轻量级后端框架 Flask
  • PH|EH————meta
  • python使用django搭建图书管理系统
  • Android Retrofit + RxJava + OkHttp 网络请求高效封装方案
  • 并查集模板
  • 29-验证回文串
  • 【C++初阶】类与对象(下)
  • Docker 运行 GPUStack 的详细教程
  • 滨州做网站的电话/5188关键词平台
  • 公司网站建设毕业论文/windows优化大师有哪些功能
  • 商务网站建站/冯站长之家
  • 网站建设任务书/百度seo排名培训 优化
  • angular 做网站/软文营销范文
  • 网站建设的需求怎么写/国内新闻