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年暑假正好在学院实验室呆了一段时间,做了个完整的上位机软件(具体实现:根据下位机的指令,实现通过串口来操纵下位机进行实验,并将采集的数据进行处理和保存,并以图形的方式显示),整个项目边学 ...
随机推荐
- 端到端TVM编译器(上)
端到端TVM编译器(上) 摘要 将机器学习引入到各种各样的硬件设备中.AI框架依赖于特定于供应商的算子库,针对窄范围的服务器级gpu进行优化.将工作负载部署到新平台,例如手机.嵌入式设备和加速器(例如 ...
- 《精通 ASP.NET Core MVC (第七版)》开始发售
学习 Web 开发技术很难吗?没有适合的学习资料,确实很枯燥,很难.如果有一本如同良师益友的优秀图书辅助,就很轻松,一点也不难! 对于优秀的技术图书来说,必须从读者的角度来编写,而不是从作者的角度来编 ...
- 单点突破:Set
HashSet HashSet存放的是散列值,它是按照元素的散列值来存取元素的. 元素的散列值通过hashCode方法计算 HashSet通过判断两个元素的Hash值是否相等,如果相等就会用equal ...
- MySQL必知必会复习笔记(1)
MySQL必知必会笔记(一) MySQL必知必会是一本很优秀的MySQL教程书,并且相当精简,在日常中甚至能当成一本工作手册来查看.本系列笔记记录的是:1.自己记得不够牢的代码:2.自己觉得很重要的代 ...
- JVM 垃圾回收算法和垃圾回收器
JVM 垃圾回收算法和垃圾回收器. 一.垃圾回收的区域 栈:栈中的生命周期是跟随线程,所以一般不需要关注. 堆:堆中的对象是垃圾回收的重点. 方法区:这一块也会发生垃圾回收,不过这块的效率比较低,一般 ...
- 【数论】8.30题解-prime素数密度 洛谷p1835
prime 洛谷p1835 题目描述 给定区间[L, R](L <= R <= 2147483647, R-L <= 1000000),请计算区间中 素数的个数. 输入输出 输入 两 ...
- Pandas高级教程之:category数据类型
目录 简介 创建category 使用Series创建 使用DF创建 创建控制 转换为原始类型 categories的操作 获取category的属性 重命名categories 使用add_cate ...
- python读取csv文件绘制气温图,x轴为日期,并填充颜色
- Unity使用Photon PUN2设置中国区服务器
原文地址:Unity使用Photon PUN2设置中国区服务器 入门系列 PUN2选择中国区服务器 先搜索中国区官网 选择试用购买 绑定你的Appid 注意: 当你的Appid申请了中国区后,海外的你 ...
- flutter中ListView的详细讲解
1.ListView的简单介绍 ListView是最常用的可以滚动组件之一, 它可以沿一个方向进行线性排列所有的子组件. 下面是ListView的属性值介绍: scrollDirection:列表的滚 ...