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”;
但是[]中间只能是常量表达式,那么笨办法只能是一个一个敲,有没有别的方法呢?
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];
谢谢分享
谢谢分享
谢谢分享
谢谢分享
谢谢分享
