微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog 怎么把字符串 一个字符一个字符发送

verilog 怎么把字符串 一个字符一个字符发送

时间:10-02 整理:3721RD 点击:
例如reg [1 : 8*14] Message;       Message = "INTERNAL ERROR";
        output reg[7:0] data_out;
要把INTERNAL ERROR 一个字符一个字符 由data_out发送出来 怎么实现呢?

data_out = Message[8*14:8*14-7];//发送第一个 “I”;
但是[]中间只能是常量表达式,那么笨办法只能是一个一个敲,有没有别的方法呢?

可以用一个for loop来实现啊
for (i = 0; i <14; i++)
  data_out = Message[8*14-i*8 : 8*14-i*8-7];
不过用rtl来实现这种逻辑功能,貌似有些奇怪。

赞同楼上的说法  
我学了没多久 只知道verilog是硬件语言 硬件输入输出无非就是0 和1 所以你这个想法就是强人所难的感觉

采用字节移位的方法做:
1.定义一个字节移位的寄存器byte_shift;
2.再定义一个message加载控制信号load_message,便于新的message输入;
3.再定义一个发送字节计数byte_cnt;
always @(posedge clk or negedge rst_n)
    if(!rst_n)
         byte_shift <= 14*8'd0;
    else if(load_message)
         byte_shift <= message;
    else if(byte_cnt < 14)
         byte_shift <= {8'd0,byte_shift[14*8:8]};
   
data_out = byte_shift[7:0];

谢谢分享

谢谢分享

谢谢分享

谢谢分享

谢谢分享

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top