信号 | 类型 | 意义 |
clk | 输入信号 | 时钟信号。 |
rst_n | 输入信号 | 复位信号,低电平有效。 |
din | 输入信号 | 接收的Ascii码数据,位宽为8bit。 |
din_vld | 输入信号 | 输入数据有效指示信号,1bit位宽,当其为高电平时,对应输入数据有效,表示接收到一字节的数据。注意,一个时钟的高电平表示接收到一字节数据。 |
dout | 输出信号 | Ascii码转化为十六进制数之后的输出,位宽为4bit。 |
dout_vld | 输出信号 | 输出数据有效指示信号,1bit位宽,当输入在红框范围内时,dout_vld为高电平,表示Ascii转十六进制转化成功,当输入不再红框范围内时,则dout_vld为低电平,表示数据无效。 |
module acsii2hex( clk , rst_n , din , din_vld , dout , dout_vld ); parameter DIN_W = 8; parameter DOUT_W = 4; input clk ; input rst_n ; input [DIN_W-1:0] din ; input din_vld ; wire [DIN_W-1:0] din ; wire din_vld ; output[DOUT_W-1:0] dout ; output dout_vld ; reg [DOUT_W-1:0] dout ; reg dout_vld ; always @(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin dout_vld <= 0; end else if(din_vld&&((din>=8'd48&&din<8'd58)||(din>=8'd65&&din<8'd71)||(din>=8'd97&&din<8'd103)))begin dout_vld <= 1; end else begin dout_vld <= 0; end end always@(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin dout <= 0; end else if(din>=8'd48&&din<8'd58) begin dout <= din - 8'd48; end else if(din>=8'd65&&din<8'd71) begin dout <= din - 8'd55; end else if(din>=8'd97&&din<8'd103) begin dout <= din - 8'd87; end else begin dout <= 0; end end endmodule |
更多回帖