前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >字符效果仿真

字符效果仿真

作者头像
数字芯片社区
发布2020-09-03 17:11:21
4870
发布2020-09-03 17:11:21
举报
文章被收录于专栏:数字芯片数字芯片

1. 字符点阵产生

如图在PCtoLCD2002中输入数字ICer,点击生成字模,保存字模;

2.修改字模格式,删除提示信息,标点符号等;去掉全部0x,并逐一合并两项;(可以使用perl、python等提高效率)

修改后结果:

3.在代码文件中,利用readmemh函数读取生成的字模;

仿真如下:

可以制作表白文字,这就是工科人的浪漫吧!

工程代码:

//TOP文件
module char_display
(
  input      clk,
  input      rst_n,
  output  [15:0]  out    
);
wire  [15:0]  data_out;
reg    [15:0]  count;
wire  [7:0]  raddr  =  count[15:8];
assign  out  =  {16{clk}} & data_out;

BRAM BRAM_inst
(
  .clk    (  clk      ) ,  // input  clk
  .wr_en    (  1'b0      ) ,  // input  wr_en
  .waddr    (  1'b0      ) ,  // input [MEMWIDTH-1:0] waddr
  .raddr    (  raddr    ) ,  // input [MEMWIDTH-1:0] raddr
  .data_in  (  8'b0      ) ,  // input [DATAWIDTH-1:0] data_in
  .data_out  (  data_out  )   // output [DATAWIDTH-1:0] data_out
);
defparam BRAM_inst.MEMWIDTH = 8;
defparam BRAM_inst.DATAWIDTH = 16;

always@(posedge clk,negedge rst_n)
begin
  if(!rst_n)
    count  <=  'b0;
  else
    count  <=  count  +  1'b1;
end
endmodule
////////////////////////////////////////////////////////////////////////////////
//BRAM文件
////////////////////////////////////////////////////////////////////////////////
module BRAM 
   #(  
    parameter   MEMWIDTH   = 20,    //1024 * data 
    parameter  DATAWIDTH   = 1
   )               
   (
   input wire                   clk, 
   input wire                   wr_en,    //写有效信号
   input wire  [MEMWIDTH-1:0]    waddr,    //写地址
   input wire  [MEMWIDTH-1:0]    raddr,    //读地址
   input wire  [DATAWIDTH-1:0]   data_in,  //写入的数据
   output reg  [DATAWIDTH-1:0]   data_out  //读出的数据
   );


// Memory Array
reg  [DATAWIDTH-1:0] memory[0:(2**MEMWIDTH-1)];

initial
begin
//  $readmemh("E:/学习/char_display/char_display/数字ICer.txt",memory);
    $readmemh("E:/学习/char_display/char_display/我宣你.txt",memory);
end

always@(posedge clk)
begin
  if( wr_en )
    memory[waddr]  <=  data_in;
  data_out  <=  memory[raddr];
end

endmodule
//仿真文件
`timescale 1 ps/ 1 ps
module char_display_vlg_tst();
reg clk;
reg rst_n;
wire [15:0]  out;

char_display i1 (
  .clk(clk),
  .out(out),
  .rst_n(rst_n)
);
initial   begin                                                  
      clk    =  0;
      rst_n  =  0;
  #100  rst_n  =  1;
  
  #1000000  
  $stop(2);                   
  end                                           
always  #10  clk  =  ~clk;                                                 
                                                  
endmodule

4.工程获取:包括代码工程及字模生成软件

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数字ICer 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档