芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 3400|回复: 2

基于ACX720开发板动态字符显示工程移植修改说明

[复制链接]
  • TA的每日心情
    开心
    2021-1-26 21:41
  • 15

    主题

    41

    帖子

    273

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    273
    发表于 2022-7-14 23:06:01 | 显示全部楼层 |阅读模式

    本贴提供的工程是显示8行,每行显示10个数字,显示数字可由vio调试工具修改,先上效果图,具体工程文件见留言区1楼。

    image.png

    如果网友想移植修改显示行数和每行字符个数,下面列出需要修改的地方,详细的设计思路可参考AXC720开发板配套的教程资料。有任何问题可以留言或小梅哥技术交流群咨询。

    1、顶层文件dync_char_tft.v中的关于显示字符个数的参数

    image.png

    2、本工程显示字符的来源是利用VIO调试工具产生,显示的字符总数变化后,这里也需要做相应的修改,比如这里一行显示10个数字,显示8行,那总共就是8*10个数字,每个数字需4bit,则共需320bit,由于一个VIO的一个端口最大位宽256bit,为了实现320bit数据,这里例化了2个,每个位宽160,拼接正好320bit,这里需要用户根据实际情况来修改,当然如果不采用VIO产生数字,内部逻辑产生数据也是可以的,位宽计算方法类似。显示数字的更新是在数据有变化的情况下才去启动一次扫描,屏幕显示就更新。

    image.png

    3、data_scan_ctrl.v文件需要修改如下代码,这个always块的代码需要根据实际情况修改,这里总共显示是80个字符,extr_data_cs就是80bit的片选信号,每个bit对应一个待显示数据的更新,哪个bit为1,对应的要显示的数据就更新赋值给extr_data_num。这个由于显示的数字比较多,case的分支就比较多,这里暂时还没有想到比较简单的写法,目前代码可以满足80个以下字符的显示,如果超过80个字符,这里case的分支需增加。

    image.png

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-1-26 21:41
  • 15

    主题

    41

    帖子

    273

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    273
     楼主| 发表于 2022-7-14 23:14:39 | 显示全部楼层
    工程文件见附件

    acx720_dync_char_tft800x480.zip

    105.12 KB, 下载次数: 282

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-12-31 09:03
  • 71

    主题

    78

    帖子

    977

    积分

    高级会员

    Rank: 6Rank: 6

    积分
    977
    发表于 2022-7-15 10:43:39 | 显示全部楼层
    补充一下,工程顶层文件对存储区域的例化方式,也在原ACX720开发板例程仅显示1行数字的任务下进行了进一步修改。例化方式使用嵌套for循环语句,完成存储数据由1维到2维的变化。

    顶层145行左右位置:

    genvar i;
    genvar j;
    generate
      for (j=0; j < COL_DISP_CHAR_NUM; j=j+1)
      begin
        for (i=0; i < ROW_DISP_CHAR_NUM; i=i+1)
        begin: num_dpram
          num_dpram num_dpram_inst (
            .clka  (clk_ctrl          ), // input wire clka
            .wea   (update_data_wr[(j*ROW_DISP_CHAR_NUM)+i] ), // input wire [0 : 0] wea
            .addra (update_data_addr  ), // input wire [4 : 0] addra
            .dina  (update_data       ), // input wire [15 : 0] dina
            .clkb  (clk_ctrl          ), // input wire clkb
            .addrb (ram_addrb[4:0]         ), // input wire [4 : 0] addrb
            .doutb (ram_doutb_tmp[j][16*(i+1)-1:16*i] )  // output wire [15 : 0] doutb
          );
        end
      end
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

    GMT+8, 2024-12-4 16:38 , Processed in 0.081881 second(s), 35 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

    快速回复 返回顶部 返回列表