相关文章推荐
玉树临风的针织衫  ·  npm install ...·  2 年前    · 
闷骚的山楂  ·  Verilog/ ...·  2 年前    · 

假设输入只有如下情况

ASCII码 ASCII对应的16进制及10进制 16进制 ASCII码转化为16进制 16进制转化为ASCII码
0-9 8'h30-8'h39(即d'48-d'57) 0-9 ASCII对应10进制减去d'48 16进制加d'48
A~F 8'h41-8'h46(即d'65-d'70) a-f ASCII对应10进制减去d'55 16进制加d'55
a~f 8'h61-8'h66即d'97-d'102) a-f ASCII对应10进制减去d'87 16进制加d'87

由于16进制中大小写都是一样的所以规定十六进制数据的输入为大写字母时

因此获得16进制转ASCII码,Verilog代码如下:

module hex_to_ascii( clk , rst_n , din , din_vld , //参数定义 parameter D_W = 8; //输入信号定义 input clk ; input rst_n ; input [D_W-1:0] din ; input din_vld; wire [D_W-1:0] din ; //输出信号定义 output [D_W-1:0] dout ; //输出信号reg定义 reg [D_W-1:0] dout ; //dout always @(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin dout <= 0; else begin if(din_vld)begin if(din<4'ha)//0-9数字 dout <= din+48;//hex((4))->dec(asccii(4)) dout <= din +55; endmodule

反之ASCII转16进制就需要考虑一下大小写,,Verilog代码如下:

always@(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin dout <= 0; else if(din>=8'd48&&din<8'd58) begin dout <= din - 8'd48; else if(din>=8'd65&&din<8'd71) begin dout <= din - 8'd55; else if(din>=8'd97&&din<8'd103) begin dout <= din - 8'd87; else begin dout <= 0; 该 Verilog 模块实现了 ASCII码 16进制 数的 转换 (0-99范围)。模块采用时钟同步设计,输入为十位和个位的 ASCII码 字符,输出为对应的 16进制 数值。 转换 逻辑首先检查输入是否为数字字符(0x30-0x39),若是则减去0x30得到实际数值,非数字字符则处理为0。最终输出为(十位值×10 + 个位值)。模块包含异步复位功能,复位时所有输出清零。这种设计适用于需要将 ASCII码 数字 转换 为二进制数值的数字电路应用。 转换 应该是输出的 转换 ,同样是一个数,在计算机内存中表示是一样的,只是输出不一样 ASCII是针对字符的编码,几乎是键盘上的字符的编码。下面是一张ASCII和 16进制 的对应表: ASCII与 16进制 转换 ASCII ASCII ASCII ASCII ASCII(American Standard Code for Information Interchange:美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。 它是现今最通用的信息交ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。 标准ASCII 码也叫基础 ASCII码 ,使用7 位二进制数(剩下的1位二进制... 表 A-1 DEC 多国字符集 十六进制代码 MCS 字符或缩写 DEC 多国字符名 ASCII 控制字符 1 ... 每个ASCII字符 转化 16进制 是两位的 16进制 数,同样,把 16进制 转化 成ASCII时是两位一起 转化 成一个ASCII字符,然后把他们联结起来。ASCII是针对字符的编码,几乎是键盘上的字符的编码。所以,45的ASCII表示就是4的ASCII表示和5的ASCII表示联结起来的。 转换 应该是输出的 转换 ,同样是一个数,在计算机内存中表示是一样的,只是输出不一样。关于这张表,主要是键盘上的键值字符在计算机中的。都只是概念上的东西,在计算机中通通是二进制。存储,为了方便, 转化 成的 16进制 表示。... 写一个关于ASCII与十六进制 转换 的函数实现吧,年纪大了,记性不好,有时候总是得翻一翻看看怎么实现的,现在记一下,以后好找。如有什么不足,大家可以提意见, 相互 学习,进步。 与其说是记不住,其实还是自己没有理解透彻ASCII与十六进制之间的关系,所以在写函数实现的时候,不知道如何下手,下表是ASCII与十六进制的对照表,可以好好记记,记住了,以后代码实现就信手拈来了