Modelsim波形显示字符
偶然在 QQ 群里看到一个大佬发的 Modelsim 波形显示字符,闲着没事拿来玩玩,并将改良过程也整理一下。
一、字符点阵产生
软件采用 PCtoLCD2002,打开后不需要设置,直接打字然后点击【生成字模】,然后复制产生的字模。

二、字模调整
复制之后的字模如下所示:

将字模中的提示信息、标点符号、注释都删除。并且将相邻两个数据调整为一个数据,并将调整后的所有数据调整为一列,如下所示:

调整完后将该文件重命名并修改后缀为【char.hex】,供后面 Verilog 读取该文件。
三、代码设计
原文的设计有 2 个 Verilog 设计文件和 1 个 testbench 文件,我将其合并为 1 个,如下所示:
1 `timescale 1ns/1ps //时间精度
2
3 module char_display;
4 //========================< 信号 >==========================================
5 reg clk = 0 ; //时钟,初始为0
6 reg [15:0] ram[2**8-1:0] ; //数组
7 reg [15:0] cnt = 0 ; //计数器,初始为0
8 wire [ 7:0] rd_addr ; //读地址
9 reg [15:0] rd_data ; //数组读数据
10 wire [15:0] char ; //字符显示
11 //========================< 代码 >==========================================
12 //时钟
13 always #10 clk = ~clk;
14
15 //数组初始化,读取字符数据
16 initial $readmemh("char.hex", ram);
17
18 //数组读地址
19 always@(posedge clk) begin
20 cnt <= cnt + 1'b1;
21 end
22
23 assign rd_addr = cnt[15:8];
24
25 //数组读数据
26 always @(posedge clk) begin
27 rd_data <= ram[rd_addr];
28 end
29
30 //波形输出(rd_data已经有形状了,再把它加粗)
31 assign char = rd_data[15:0] & {16{clk}};
32
33
34 endmodule
四、仿真波形
建立 Modelsim 工程并显示 char 信号的波形,展开 char 信号即可看到字符了。当然也可以写个脚本自动化仿真,脚本文件如下所示:
1 # ========================< 清空软件残留信息 >==============================
2
3 # 退出之前仿真
4 quit -sim
5
6 # 清空信息
7 .main clear
8
9 # =========================< 建立工程并仿真 >===============================
10
11 # 建立新的工程库
12 vlib work
13
14 # 映射逻辑库到物理目录
15 vmap work work
16
17 # 编译文件
18 vlog *.v
19
20 # 启动仿真:10.7之前版本的仿真请将"-voptargs=+acc换成-novopt"
21 vsim -voptargs=+acc work.char_display
22
23 # ============================< 加载波形 >==================================
24
25 # 添加标签和波形
26 add wave -position insertpoint \
27 {sim:/char_display/char[15]} \
28 {sim:/char_display/char[14]} \
29 {sim:/char_display/char[13]} \
30 {sim:/char_display/char[12]} \
31 {sim:/char_display/char[11]} \
32 {sim:/char_display/char[10]} \
33 {sim:/char_display/char[9]} \
34 {sim:/char_display/char[8]} \
35 {sim:/char_display/char[7]} \
36 {sim:/char_display/char[6]} \
37 {sim:/char_display/char[5]} \
38 {sim:/char_display/char[4]} \
39 {sim:/char_display/char[3]} \
40 {sim:/char_display/char[2]} \
41 {sim:/char_display/char[1]} \
42 {sim:/char_display/char[0]}
43
44 # 跑400us
45 run 400us
最后的结果如下所示:

也可以发挥创造力,弄个两行的字符波形出来,只需要将关键代码多设置一份就行了。

五、工程链接
链接:https://pan.baidu.com/s/1kKI0d2TzDfh78Ed_RAMcAA
提取码:867g
参考资料:公众号《数字积木》

Modelsim波形显示字符的更多相关文章
- Modelsim设置数据以模拟波形显示
选中希望以模拟波形显示的信号,右击选择format—>Analog(automatic) 如果你的数据是用无符号数表示一个完整的波形的,那么可能显示出来的波形样子是下面的样子,不过不要紧,这是因 ...
- 玩转X-CTR100 | X-PrintfScope波形显示
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] X-CTR100控制器配套的X-Print ...
- Oracle一列的多行数据拼成一行显示字符
Oracle一列的多行数据拼成一行显示字符 oracle 提供了两个函数WMSYS.WM_CONCAT 和 ListAgg函数. www.2cto.com 先介绍:WMSYS.WM_CO ...
- 在当前光标处按指定属性显示字符 - BOIS中断
在当前光标处按指定属性显示字符 - BOIS中断 最简单的调试方式是打印. 编写MBR时,判断MBR是否加载并运行,最直接的方式就是打印一个字符. INT 0x10 功能描述: 在当前光标处按指定属性 ...
- [转] 基于C#的波形显示控件的实现
转自 基于C#的波形显示控件的实现[附完整源码下载] 编者记: 09年暑假正好在学院实验室呆了一段时间,做了个完整的上位机软件(具体实现:根据下位机的指令,实现通过串口来操纵下位机进行实验,并将采集的 ...
- 显示字符 Exercise06_12
/** * @author 冰樱梦 * 时间:2018年下半年 * 题目:显示字符 *1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J ...
- STM32学习之路-LCD(4)<显示字符>
昨晚疯狂的打了一夜的LOL,感觉L多了,今天一天精神萎靡.还是继续把显示字符给看了,可是在犹豫要不要写这篇文章 事实上写的东西也就是copy别人家的代码,不想写那么多,就记录下自己困惑的地方吧.也许改 ...
- 在Modelsim波形窗口复制信号
可以通过张贴复制变量名在Modelsim波形窗口复制信号.
- 基于C#的波形显示控件的实现[转]
编者记: 09年暑假正好在学院实验室呆了一段时间,做了个完整的上位机软件(具体实现:根据下位机的指令,实现通过串口来操纵下位机进行实验,并将采集的数据进行处理和保存,并以图形的方式显示),整个项目边学 ...
随机推荐
- CVPR2020论文解读:3D Object Detection三维目标检测
CVPR2020论文解读:3D Object Detection三维目标检测 PV-RCNN:Point-Voxel Feature Se tAbstraction for 3D Object Det ...
- 转置卷积Transposed Convolution
转置卷积Transposed Convolution 我们为卷积神经网络引入的层,包括卷积层和池层,通常会减小输入的宽度和高度,或者保持不变.然而,语义分割和生成对抗网络等应用程序需要预测每个像素的值 ...
- 基于Kaggle的图像分类(CIFAR-10)
基于Kaggle的图像分类(CIFAR-10) Image Classification (CIFAR-10) on Kaggle 一直在使用Gluon's data package数据包直接获得张量 ...
- jmeter工作目录介绍、jmeter元件及组件介绍
一.jmeter工作目录介绍: bin:放置各项配置文件(如日志设置.JVM设置).启动文件.启动Jar包.示例脚本等: docs:放置JMeter API的离线帮助文档: extras:JMeter ...
- 尚硅谷Java——宋红康笔记【day1-day5】
day1 注释 1.java规范的三种注释方式: 单行注释 多行注释 文档注释(java特有) 2. 单行注释和多行注释的作用: ① 对所写的程序进行解释说明,增强可读性.方便自己,方便别人 ② 调试 ...
- java面试技巧及层次。
不断的积累,从打算找工作之日起,就要坚持在每天闲暇之余学习其中几道题目,日积月累,等到出去面试时,一切都水到渠成,面试时就自然会游刃有余了. 答题时,先答是什么,再答有什么作用和要注意什么,这里给人的 ...
- 报错:vmnet8设置中出现错误。子网IP和子网掩码不一致
报错:vmnet8设置中出现错误.子网IP和子网掩码不一致 设置子网IP时报错,如下图 同样的,写成192.168.0.0就没问题,如下图 总结: 这个虚拟网络编辑器是给添加网卡的,你添加vmnet8 ...
- 最好的Kubernetes客户端Java库fabric8io,快来自定义你的操作
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 Kubernetes Java客户端 对于Kubernetes集群的操作,官方提供了命令行工具kubectl,这也是我 ...
- JAVA设计模式(6:单例模式详解)
单例模式作为一种创建型模式,在日常开发中用处极广,我们先来看一一段代码: // 构造函数 protected Calendar(TimeZone var1, Locale var2) { this.l ...
- Spring Boot下的一种导入Excel文件的代码框架
1.前言 Spring Boot下如果只是导入一个简单的Excel文件,是容易的.网上类似的文章不少,有的针对具体的实体类,代码可重用性不高:有的利用反射机制或自定义注解,开发了Excel导入工具 ...