荐读:基于FPGA 的CRC校验码生成器

FPGA学习交流 2018-06-13 11:18 次阅读

       大家好,又到了每日学习的时间了,今天我们来聊一聊基于FPGA 的CRC校验码生成器。下面咱们就来具体看看,欢迎大家一起交流学习。
       
       1.概述
       CRC即Cyclic Redundancy Check,循环冗余校验,是一种数字通信中的常用信道编码技术。其特征是信息段和校验字段的长度可以任意选定。

       2.CRC校验的基本原理:
       CRC码是由两部分组成的,前部分是信息码,就是需要校验的信息,后部分是校验码,如果CRC码长共n bit,信息码长k bit,就称为(n,k)码,剩余的r bit即为校验位。如:(7,3)码:110 1001,前三位110为信息码,1001为校验码。

       3.校验码的生成规则:
       1)将原信息码左移r bit,右侧补零,如 110--> 110 0000;
       2)用110 0000除以g(x)  (注意,使用的是模2除法,见下文),得到的余数即为CRC校验码;
       3)将校验码续接到信息码的尾部,形成CRC码。
       
       4.关于生成多项式g(x)
       在产生CRC校验码时,要用到除法运算,一般来说,这是比较麻烦的,因此,把二进制信息预先转换成一定的格式,这就是CRC的多项式表示。二进制数表示为生成多项式的系数,如下:
       102707v1usnbr9mmc6cc29.png

       所有二进制数均被表示为一个多项式,x仅是码元位置的标记,因此我们并不关心x的取值,称之为码多项式。(我没研究过CRC代数推理过程,没体会到用多项式计算的方便之处,这里要学会的就是给出生成多项式g(x),能写出对应的二进制即可)

       常见的生成多项式如下:
       102707znkdf1twu1rqth1q.png

       5.关于模2除法

       模2运算就是加法不考虑进位,减法不考虑借位,

       1)加法运算:

       0+0=0        0+1=1        1+0=1        1+1=0

       例如0101+0011=0110,列竖式计算:

          0 1 0 1

      + 0 0 1 1

      ──────

          0 1 1 0

       2)减法运算:

       0-0=0        0-1=1        1-0=1        1-1=0

       例如0110-0011=0101,列竖式计算:

         0 1 1 0

     -  0 0 1 1

       ──────

         0 1 0 1

       3)乘法运算

       0×0=0        0×1=0        1×0=0        1×1=1

       多位二进制模2乘法类似于普通意义上的多位二进制乘法,不同之处在于后者累加中间结果时采用带进位的加法,而模2乘法对中间结果的处理方式采用的是模2加法。例如1011×101=100111,列竖式计算:
       102708cgy44pc48hpazafg.png

       4)除法运算:

       0÷1=0        1÷1=1

       多位二进制模2除法也类似于普通意义上的多位二进制除法,但是在如何确定商的问题上两者采用不同的规则。后者按带借位的二进制减法,根 据余数减除数够减与否确定商1还是商0,若够减则商1,否则商0。多位模2除法采用模2减法,不带借位的二进制减法,因此考虑余数够减除数与否是没有意义 的。实际上,在CRC运算中,总能保证除数的首位为1,则模2除法运算的商是由余数首位与除数首位的模2除法运算结果确定。因为除数首位总是1,按照模2 除法运算法则,那么余数首位是1就商1,是0就商0。例如1100100÷1011=1110……110,列竖式计算:
       102708xbq7qbq7c944h13p.png


       掌握了上面的运算规则,您可以尝试计算一个复杂一点的,如下:
       102709k6gyjgvcgchje8xs.png


       如果得到的余数结果正确,您掌握的东西就够用了。

       6.CRC-CCITT的硬件实现

       CRC-CCITT的生成多项式为:
       102709lpbt3bvhb3at703t.png


       对应的二进制数就是上面复杂运算中那个除数。由刚才的计算可知,对于8 bit的数据 0xaa,它的CRC校验码为0001 0100 1010 0000,下面用verilog来实现,看能否得到这个结果:

       要实现这一过程,仍然需要LFSR电路,参看《FPGA产生基于LFSR的伪随机数》中关于该电路特性的介绍,如果您不需要了解原理,直接略过即可;有所改进的地方就是,可以将伪随机数发生器看作一个Moore型状态机,它的输出只与当前的状态有关;而此时利用LFSR电路,需要引入数据输入端,输出不仅取决于当前的状态,还取决于输入信号,相当于Mealy型状态机,如下图:
       102709mygb577773w7wg7k.png

       注意对比与伪随机数产生器中该反馈支路的区别!

       反馈项gr+1gr……g0为生成多项式的系数,依然是1代表存在反馈,0代表不存在反馈;此电路可以完成上述的模2除法操作,若我们要求0xaa的CRC校验码,则从高位到低位顺序输入0xaa共8 bit后,D15……D0中的数据即为所要求的余数,即CRC校验位。

       7.verilog描述
       如果用时序电路串行实现,则8 bit数据要移位8次,就需要8个clk,效率低下,为了能在一个时钟周期输出结果,必须采用组合电路,当然,这是以空间换时间的方法,由于使用了for循环8次,直观的讲电路规模将扩大8倍。

module CRC_GEN(
   input            rst,     /*async reset,active low*/
   input            clk,     /*clock input*/
   input     [7:0]  data_in, /*parallel data input pins */
   input            d_valid, /* data valid,start to generate CRC, active high*/
   output reg[15:0] crc
);

integer i;
reg feedback;
reg [15:0] crc_tmp;
/*
*  sequential process
*/
always @(posedge clk or negedge rst)
begin
   if(!rst)
       crc <= 16'b0;          /*触发器中的初始值十分重要 */
   else if(d_valid==1'b0)
       crc <= 16'b0;
   else
       crc <= crc_tmp;
end

/*
*   combination process
*/
always@( data_in or crc)
begin
   crc_tmp = crc;
   for(i=7; i>=0; i=i-1)
   begin
       feedback    = crc_tmp[15] ^ data_in;
       crc_tmp[15]  = crc_tmp[14];
       crc_tmp[14]  = crc_tmp[13];
       crc_tmp[13]  = crc_tmp[12];
       crc_tmp[12]  = crc_tmp[11] ^ feedback;
       crc_tmp[11]  = crc_tmp[10] ;
       crc_tmp[10]  = crc_tmp[9];
       crc_tmp[9]   = crc_tmp[8];
       crc_tmp[8]   = crc_tmp[7];
       crc_tmp[7]   = crc_tmp[6];
       crc_tmp[6]   = crc_tmp[5];
       crc_tmp[5]   = crc_tmp[4] ^ feedback;
       crc_tmp[4]   = crc_tmp[3];
       crc_tmp[3]   = crc_tmp[2];
       crc_tmp[2]   = crc_tmp[1];
       crc_tmp[1]   = crc_tmp[0];
       crc_tmp[0]   = feedback;
    end
end

endmodule

       仿真结果如下:得到的是数据0xaa和0xf0的CRC校验码,为验证结果的正确性,您可以按照模2法则手工计算一下^.^
       102710oaj7a9jjv33pwefx.png


       8.同样给出一个4 bit信息位,5 bitCRC码的(9,4)码的程序和仿真结果,程序的流程与上述流程完全一样:
       102710e8q11f8xfd2x21fa.png

       112006x6h59yatxsx2dyzd.png

       102710bsse8lf8pp1zsfh2.png

       后记:细心的读者可能发现,本文对LFSR电路能完成模2求余操作的原因避而不谈,不是因为不告诉你,是因为我也不是很清楚,工科背景对数学推理实在是有点不知所云,尤其是看到国内教材那好几页的公式的时候,如果您有深入浅出的讲解LFSR电路由来与应用的文章,注意是深入浅出的,请您大力推荐,在此感谢!

       今天就聊到这里,各位,加油。

热门推荐

收藏 人收藏
分享:

评论

相关推荐

FPGA资源怎么平民化?阿里云的新改造

FPGA (现场可编程门阵列)由于其硬件并行加速能力和可编程特性,在传统通信领域和IC设计领域大放异....

发表于 06-23 09:44 30次 阅读
FPGA资源怎么平民化?阿里云的新改造

FPGA中的冒险现象和如何处理毛刺

通过改变设计,破坏毛刺产生的条件,来减少毛刺的发生。例如,在数字电路设计中,常常采用格雷码计数器取代....

发表于 06-23 08:49 20次 阅读
FPGA中的冒险现象和如何处理毛刺

面向数据包处理的Xilinx智能解决方案

在开放式协作服务爆炸性增长以及移动和社交网络不断发展的推动下,结合智能设备的普及以及不同服务供应商和....

发表于 06-22 15:13 26次 阅读
面向数据包处理的Xilinx智能解决方案

NGcodec谈FPGA编码在HEVC和AV1上现状与未来

随着HEVC、AV1等更复杂算法的Codec份额逐步增长,实现高质量视频编解码需要硬件支持,软件的方....

发表于 06-22 15:01 25次 阅读
NGcodec谈FPGA编码在HEVC和AV1上现状与未来

关于基于分数低阶协方差谱的频谱感知算法研究及其FPGA实现

长期以来,传统的频谱管理与划分采用静态频谱分配方式[1],导致无线频谱利用率低下,同时研究发现,即使....

的头像 电子设计 发表于 06-22 14:58 110次 阅读
关于基于分数低阶协方差谱的频谱感知算法研究及其FPGA实现

Xilinx FPGA对数字信号处理的性能

Xilinx FPGA 可提供卓越的数字信号处理 (DSP) 性能,能够满足音频处理、接口、压缩、嵌....

发表于 06-22 14:57 31次 阅读
Xilinx FPGA对数字信号处理的性能

关于基于分段多项式近似的DDFS研究及FPGA实现

感应式磁力仪基于法拉第电磁感应原理,用于探测近地空间的低频交变磁场[1],它通常自带标准信号源,用于....

的头像 电子设计 发表于 06-22 14:55 108次 阅读
关于基于分段多项式近似的DDFS研究及FPGA实现

分布式算法是一项重要的FPGA技术

式中:xb(n) 表示第n个数据的第b位。由于x(n)为有限位数据,且xb(n)的取值为[0,1],....

的头像 FPGA极客空间 发表于 06-22 14:53 159次 阅读
分布式算法是一项重要的FPGA技术

关于基于前导的OFDM系统信道估计及FPGA实现

正交频分复用(OFDM)由于具有抗多径衰落,频谱利用率高等特点,因而被广泛用于无线通信系统中。但是由....

的头像 电子设计 发表于 06-22 14:51 100次 阅读
关于基于前导的OFDM系统信道估计及FPGA实现

获得高校、专家一致认可的小脚丫FPGA开发板到底有何神奇的地方?——小脚丫STEP-MXO2 二代评测

背景 微控制器作为目前嵌入式系统设计的主力军在各行各业得到了广泛的应用,但随着物联网、智能硬件、VR....

发表于 06-22 11:35 44次 阅读
获得高校、专家一致认可的小脚丫FPGA开发板到底有何神奇的地方?——小脚丫STEP-MXO2 二代评测

FPGA仿真问题

发表于 06-22 09:56 58次 阅读
FPGA仿真问题

FPGA电源设计挑战

发表于 06-22 09:38 202次 阅读
FPGA电源设计挑战

关于IPIPEIF和ISIF对RAW数据的处理,请问是什么原因改变了RAW数据的附加信息?

发表于 06-22 07:56 154次 阅读
关于IPIPEIF和ISIF对RAW数据的处理,请问是什么原因改变了RAW数据的附加信息?

请问dm385 ar0331摄像头的fpga起什么作用?

发表于 06-22 06:04 22次 阅读
请问dm385 ar0331摄像头的fpga起什么作用?

请问DM355可以做视频叠加吗?需要加FPGA吗?

发表于 06-22 02:39 17次 阅读
请问DM355可以做视频叠加吗?需要加FPGA吗?

请问fpga+7002把24bit或者30bit的数据转化为8bit的数据如何实现?

发表于 06-22 00:33 18次 阅读
请问fpga+7002把24bit或者30bit的数据转化为8bit的数据如何实现?

基于FPGA的异步FIFO的实现

大家好,又到了每日学习的时间了,今天我们来聊一聊基于FPGA的异步FIFO的实现。 一、FIFO简介....

的头像 FPGA学习交流 发表于 06-21 11:15 536次 阅读
基于FPGA的异步FIFO的实现

基于单片机对FPGA进行编程配置

本文实现了基于遗传算法的硬件演化过程。通过Mcu随机产生种群,选择好的基因进行交叉变异产生后代,然....

发表于 06-21 10:45 88次 阅读
基于单片机对FPGA进行编程配置

揭秘造芯黑马的神秘面纱

如果说目前高端集成电路的落后现状是因为我国相关产业起步晚、积累少导致的,对于如今再次兴起的人工智能浪....

的头像 电子发烧友网工程师 发表于 06-21 08:02 272次 阅读
揭秘造芯黑马的神秘面纱

请问谁有XILINX FPGA 7系列的原理图封装?

发表于 06-21 02:14 121次 阅读
请问谁有XILINX  FPGA 7系列的原理图封装?

FPGA和CPU如何搭配?

如下图,FPGA作为协处理器,CPU把指令写入内存,FPGA从内存读取指令执行,并把计算结果写入内存....

的头像 ssdfans 发表于 06-20 15:17 271次 阅读
FPGA和CPU如何搭配?

PCB设计过程中需要考虑的因素

千兆位级串行I/O技术有着极其出色的优越性能,但这些优越的性能是需要条件来保证的,即优秀的信号完整性....

发表于 06-20 14:24 72次 阅读
PCB设计过程中需要考虑的因素

FPGA和ASIC之间界限正在模糊,FPGA为未来的ASIC提供设计架构

该系列器件现在包括从基本的可编程逻辑一直到复杂的SoC。在各种应用领域(包括汽车,AI,企业网络,航....

发表于 06-20 14:13 55次 阅读
FPGA和ASIC之间界限正在模糊,FPGA为未来的ASIC提供设计架构

可编程在辅助驾驶系统中的应用

通过消除繁琐的驾驶动作,辅助驾驶还可提供更高的舒适水平。例如,传统的巡航控制允许司机设定一个固定的行....

发表于 06-20 14:01 28次 阅读
可编程在辅助驾驶系统中的应用

Xilinx的7系列FPGA高速收发器:TX发送端的介绍

每一个收发器拥有一个独立的发送端,发送端有PMA(Physical Media Attachment....

发表于 06-20 13:48 48次 阅读
Xilinx的7系列FPGA高速收发器:TX发送端的介绍

FPGA学习系列:21. 自动售货机的设计

设计背景: 我们从开始学习 FPGA。到现在也慢慢的学到了血多的东西,那么我们就应该慢慢的去学习深一....

的头像 FPGA学习交流 发表于 06-20 10:41 665次 阅读
FPGA学习系列:21. 自动售货机的设计

关于FFT硬件实现,设计中RAM输出端为何没有使用REG

以2048点为例,根据理论值计算,计算一次2048点的IFFT的时间应为130us。在采用流水线的方....

的头像 FPGA极客空间 发表于 06-20 09:05 378次 阅读
关于FFT硬件实现,设计中RAM输出端为何没有使用REG

关于PIC和FPGA的区别及优缺点总结

FPGA是逻辑门器件,可以配置成为并行逻辑模块。FPGA最大优点是并行处理。例如构建一百个与非门,F....

的头像 FPGA极客空间 发表于 06-19 16:20 223次 阅读
关于PIC和FPGA的区别及优缺点总结

增强机器学习能力的“左膀右臂”的GPU、FPGA芯片

FPGA是帮助公司和研究人员解决问题的芯片。FPGA是一种集成电路,可以编程为多种用途。它有一系列“....

的头像 人工智能学家 发表于 06-19 15:27 355次 阅读
增强机器学习能力的“左膀右臂”的GPU、FPGA芯片

基于FPGA的PCIe设备如何才能满足PCIe设备的启动时间的要求?

根据PCIe的协议,当设备启动后,PCIe设备必须满足启动时间的要求,即上电后100ms内,完成PC....

发表于 06-19 10:24 59次 阅读
基于FPGA的PCIe设备如何才能满足PCIe设备的启动时间的要求?

如何避免升级失败而使FPGA变砖呢?

如果升级过程中出现意外情况,FLASH里面原有的固件被破坏,那么FPGA能够从备份固件区启动配置,即....

发表于 06-19 10:09 52次 阅读
如何避免升级失败而使FPGA变砖呢?

单片机中按键消抖程序

效率上来说,延时消抖花费时间在无意义延时上,而相对较好的定时轮询还是不可避免的在轮询,而现在这种方式....

的头像 电子工程专辑 发表于 06-19 08:55 306次 阅读
单片机中按键消抖程序

DE1的SoC开发工具包的用户手册详细资料免费下载

DE1的SoC开发工具包提供了一个强大的硬件设计平台建立在片上系统(SoC)FPGA公司,它结合了最....

发表于 06-19 08:00 21次 阅读
DE1的SoC开发工具包的用户手册详细资料免费下载

如何建立OpenCL开发环境编译和执行DE1 SoC的示例项目的详细概述

DE1 SoC是Altera片上系统(SOC)FPGA构建的一个健壮的硬件设计平台,它是Altera....

发表于 06-19 08:00 21次 阅读
如何建立OpenCL开发环境编译和执行DE1 SoC的示例项目的详细概述

SOPC和FPGA的介绍和基础实验的详细资料概述

本文档的主要内容详细介绍的是SOPC和FPGA的介绍和基础实验的详细资料概述包括了:FPGA基础实验....

发表于 06-19 08:00 36次 阅读
SOPC和FPGA的介绍和基础实验的详细资料概述

DE2-115板的详细介绍和实验指导的详细资料概述

这个练习的目的是学习如何将简单的输入和输出设备连接到FPGA芯片上,并实现使用这些设备的电路。我们将....

发表于 06-19 08:00 35次 阅读
DE2-115板的详细介绍和实验指导的详细资料概述

LabVIEW状态图模块的详细介绍和使用手册详细概述

该模块在 LabVIEW 中增加了创建状态图的功能,以开収基于事件的控制与测试系统。状态图编程模块迚....

发表于 06-19 08:00 22次 阅读
LabVIEW状态图模块的详细介绍和使用手册详细概述

使用FPGA在C6678的外部实现中断控制器,这样的结构是否可以实现外部设备给指定的core发送中断?为什么?

发表于 06-19 05:20 29次 阅读
使用FPGA在C6678的外部实现中断控制器,这样的结构是否可以实现外部设备给指定的core发送中断?为什么?

请问若DSP和FPGA通过SRIO通信,若FPGA做主设备,DSP可以自己想FPGA发起读写操作吗?

发表于 06-19 03:02 33次 阅读
请问若DSP和FPGA通过SRIO通信,若FPGA做主设备,DSP可以自己想FPGA发起读写操作吗?

简谈FPGA的上电复位

大家好,博主最近有事忙了几天,没有更新,今天正式回来了。那么又到了每日学习的时间了,今天咱们来聊一聊....

的头像 FPGA学习交流 发表于 06-18 19:24 645次 阅读
简谈FPGA的上电复位

FPGA学习系列:18. 数码管的设计

设计背景: 数码管是一种半导体发光 器件 ,其基本单元是发光二极管。 数码管在我们的许多设计中都又用....

的头像 FPGA学习交流 发表于 06-18 19:24 671次 阅读
FPGA学习系列:18. 数码管的设计

FPGA学习系列:19. rom到数码管显示设计

设计背景: rom是读写的的静态存储单元,在我们的设计中我们会经常用到,数码管模块同样的大大小小的设....

的头像 FPGA学习交流 发表于 06-18 19:24 555次 阅读
FPGA学习系列:19. rom到数码管显示设计

FPGA学习系列:20. ram控制器的设计(调用IP核)

设计背景: 随机存取存储器 (random access memory,RAM)又称作随机存储器,是....

的头像 FPGA学习交流 发表于 06-18 19:24 679次 阅读
FPGA学习系列:20. ram控制器的设计(调用IP核)

Verilog实现开方运算(自己编写的)

发表于 06-18 16:08 236次 阅读
Verilog实现开方运算(自己编写的)

FPGA成为数据中心发展的趋势及重要性

用AI防鲨鱼、用AI学写中国书法、用AI预测人类死亡时间、用AI审判罪犯……在人工智能方兴未艾的今天....

的头像 电子发烧友网工程师 发表于 06-18 07:16 458次 阅读
FPGA成为数据中心发展的趋势及重要性

这种可编程衰减器最高可支持8×8输入输出的矩阵结构

可编程衰减器位于基站和终端之间,通过对射频信号的衰减控制,实现对无线信号的模拟,从而实现对测试场景的....

发表于 06-17 14:02 61次 阅读
这种可编程衰减器最高可支持8×8输入输出的矩阵结构

你一定想知道FPGA的那些事...

作者:张泽小脚丫STEP 导读:FPGA(Field Programmable Gate Array....

发表于 06-14 13:35 325次 阅读
你一定想知道FPGA的那些事...

利用FPGA的可编程性和Java平台良好的移植性的嵌入式系统平台

传统的嵌入式系统设计的主要目标是找到一种优化的体系结构来完成单一的,特定的功能。对这样的系统来说,A....

发表于 06-14 09:16 71次 阅读
利用FPGA的可编程性和Java平台良好的移植性的嵌入式系统平台

用FPGA来实现控制电阻的提供的设计过程

本文介绍了用FPGA来实现控制电阻的提供,用软件的方式来设计硬件,设计过程中可用有关软件进行各种仿真....

发表于 06-14 09:06 76次 阅读
用FPGA来实现控制电阻的提供的设计过程

一种基于fpga的多轴控制器,可以控制多轴电机的运动

介绍了一种基于fpga的多轴控制器,控制器主要由arm7(LPC2214)和fpga(EP2C5T1....

发表于 06-14 08:24 75次 阅读
一种基于fpga的多轴控制器,可以控制多轴电机的运动

为应用选择最佳可编程SoC时进行的六个设计考虑

SoC FPGA器件在一个器件中同时集成了处理器和FPGA体系结构。将两种技术合并起来具有很多优点,....

发表于 06-13 14:59 162次 阅读
为应用选择最佳可编程SoC时进行的六个设计考虑

FPGA学习系列:13. 任意分频器设计

设计背景: 分频在 fpga的设计中一直都担任着很重要的角色,而说到分频,我相信很多人都已经想到了利....

的头像 FPGA学习交流 发表于 06-13 11:21 606次 阅读
FPGA学习系列:13. 任意分频器设计

FPGA学习系列:14. 锁相环pll设计

设计背景: 在我们设计工程中我们会用到100M,500M等时钟,如果我们的晶振达不到我们就需要倍频,....

的头像 FPGA学习交流 发表于 06-13 11:21 746次 阅读
FPGA学习系列:14. 锁相环pll设计

FPGA学习系列:15. 呼吸灯(pwm)设计

设计背景: 呼吸灯 广泛应用于手机之上,并成为各大品牌新款手机的卖点之一。如果手机里面有未处理的通知....

的头像 FPGA学习交流 发表于 06-13 11:21 949次 阅读
FPGA学习系列:15. 呼吸灯(pwm)设计

FPGA学习系列:16. rom控制器设计

设计背景: ROM是只读存储器(Read-Only Memory)的简称,是一种只能读出事先所存数据....

的头像 FPGA学习交流 发表于 06-13 11:21 509次 阅读
FPGA学习系列:16. rom控制器设计

补充: FPGA产生基于LFSR的伪随机数

大家好,又到了每日学习的时间了,上一篇《荐读:基于FPGA 的CRC校验码生成器》文中,提到了要实现....

的头像 FPGA学习交流 发表于 06-13 11:21 545次 阅读
补充: FPGA产生基于LFSR的伪随机数

FPGA学习系列:12. 边沿检测设计

设计背景: 在我们工程设计中,有时会需要到上升沿和下降沿这么一个说法,通过上升沿和下降沿来驱动一个电....

的头像 FPGA学习交流 发表于 06-13 11:20 427次 阅读
FPGA学习系列:12. 边沿检测设计

Web Installer提供的各种特性及设计方法

你有没有注意到在Netflix流媒体视频播放时,有时候视频模糊,然后很快恢复到高质量? 你知道Net....

的头像 FPGA开发圈 发表于 06-13 09:19 466次 阅读
Web Installer提供的各种特性及设计方法

DE2-115详细中文数据手册免费下载

DE2-115 套装包含了所有使用开发板会用到的器件资源,您额外需要的仅是一台装有微软视窗操作系统的....

发表于 06-13 08:00 42次 阅读
DE2-115详细中文数据手册免费下载

FPGA定点小数的常规格式、相对于浮点小数的优势与劣势和计算的概述

所谓定点小数,就是小数点固定地隐含在某一位置上的数据。由于小数点的位置是固定的,所以就没有必要储存它....

的头像 电子技术应用ChinaAET 发表于 06-12 19:34 414次 阅读
FPGA定点小数的常规格式、相对于浮点小数的优势与劣势和计算的概述