偶然在 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波形显示字符的更多相关文章

  1. Modelsim设置数据以模拟波形显示

    选中希望以模拟波形显示的信号,右击选择format—>Analog(automatic) 如果你的数据是用无符号数表示一个完整的波形的,那么可能显示出来的波形样子是下面的样子,不过不要紧,这是因 ...

  2. 玩转X-CTR100 | X-PrintfScope波形显示

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      X-CTR100控制器配套的X-Print ...

  3. Oracle一列的多行数据拼成一行显示字符

    Oracle一列的多行数据拼成一行显示字符   oracle 提供了两个函数WMSYS.WM_CONCAT 和 ListAgg函数.    www.2cto.com   先介绍:WMSYS.WM_CO ...

  4. 在当前光标处按指定属性显示字符 - BOIS中断

    在当前光标处按指定属性显示字符 - BOIS中断 最简单的调试方式是打印. 编写MBR时,判断MBR是否加载并运行,最直接的方式就是打印一个字符. INT 0x10 功能描述: 在当前光标处按指定属性 ...

  5. [转] 基于C#的波形显示控件的实现

    转自 基于C#的波形显示控件的实现[附完整源码下载] 编者记: 09年暑假正好在学院实验室呆了一段时间,做了个完整的上位机软件(具体实现:根据下位机的指令,实现通过串口来操纵下位机进行实验,并将采集的 ...

  6. 显示字符 Exercise06_12

    /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:显示字符 *1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J ...

  7. STM32学习之路-LCD(4)&lt;显示字符&gt;

    昨晚疯狂的打了一夜的LOL,感觉L多了,今天一天精神萎靡.还是继续把显示字符给看了,可是在犹豫要不要写这篇文章 事实上写的东西也就是copy别人家的代码,不想写那么多,就记录下自己困惑的地方吧.也许改 ...

  8. 在Modelsim波形窗口复制信号

    可以通过张贴复制变量名在Modelsim波形窗口复制信号.

  9. 基于C#的波形显示控件的实现[转]

    编者记: 09年暑假正好在学院实验室呆了一段时间,做了个完整的上位机软件(具体实现:根据下位机的指令,实现通过串口来操纵下位机进行实验,并将采集的数据进行处理和保存,并以图形的方式显示),整个项目边学 ...

随机推荐

  1. TVM如何训练TinyML

    TVM如何训练TinyML 机器学习研究人员和从业人员对"裸机"(低功耗,通常没有操作系统)设备产生了广泛的兴趣.尽管专家已经有可能在某些裸机设备上运行某些模型,但是为各种设备优化 ...

  2. 华为4D成像雷达、智能驾驶平台MDC 810

    华为4D成像雷达.智能驾驶平台MDC 810 2020年10月底,华为发布了HI品牌,在今年2021年上海国际车展前夕,华为以 "专新致智" 为主题,举办HI新品发布会,发布了包括 ...

  3. Camera HDR Algorithms

    Camera HDR Algorithms HDRI是High-Dynamic Range(HDR)image的缩写,也就是高动态范围图像.它就是为了解决更好的存储高动态范围图像这个问题而发明出来的. ...

  4. tensorflow-yolov4实施方法

    tensorflow-yolov4实施方法 tensorflow-yolov4-tflite YOLOv4: Optimal Speed and Accuracy of Object Detectio ...

  5. 单点突破:Spring(上)

    Spring概述 ​ 我们常说的 Spring 实际上是指 Spring Framework,而 Spring Framework 只是 Spring 家族中的一个分支而已.Spring 是为了解决企 ...

  6. 实验8、31个最重要的Python Flask面试问题和答案

    实验介绍 1. 实验内容 内容涵盖了31个最热门的Flask面试问题,帮助学生更好的理解Flask. 2. 实验要点 了解面试Flask开发人员的常见问题 实验内容 Flask面试问答 Q:Flask ...

  7. 【VBA】测试程序运行时间,延时方法

    测试程序运行时间 Dim start As Date start = Now() Dim i As Long For i = 0 To 10000000 ' 10 million Next Debug ...

  8. 腾讯TencentOS 十年云原生的迭代演进之路

    导语 TencentOS Server (又名 Tencent Linux 简称 Tlinux) 是腾讯针对云的场景研发的 Linux 操作系统,提供了专门的功能特性和性能优化,为云服务器实例中的应用 ...

  9. 如何基于 String 实现同步锁?

    如何基于String实现同步锁? 在某些时候,我们可能想基于字符串做一些事情,比如:针对同一用户的并发同步操作,使用锁字符串的方式实现比较合理. 因为只有在相同字符串的情况下,并发操作才是不被允许的. ...

  10. [apue] linux 文件访问权限那些事儿

    前言 说到 linux 上的文件权限,其实我们在说两个实体,一是文件,二是进程.一个进程能不能访问一个文件,其实由三部分内容决定: 文件的所有者.所在的组: 文件对所有者.组用户.其它用户设置的权限访 ...