网站大量收购独家精品文档,联系QQ:2885784924

毕业论文基于fpga的huffman编码压缩说明资料.docx

毕业论文基于fpga的huffman编码压缩说明资料.docx

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于FPGA的Huffman编码压缩目录实验目的2实验原理2Huffman编码的原理2FPGA原理2开发环境描述2软件配置2硬件配置3实验设计方案3Huffman编码的PC端实现3基本数据结构3基本函数4程序流程15Huffman编码的FPGA端实现16基本数据结构16基本函数16程序流程20实验步骤过程21PC端实验流程步骤21FPGA端实验流程步骤21实验结果24PC端实验结果24FGPA端实验结果25实验心得体会25实验目的实现Huffman编码在FPGA端的实现,通过实验学习Huffman编码的原理,串口通讯的原理以及对FPGA的深入了解。学习Xilinx的SDK使用方法和基本的Vivado使用方法。本设计实现PC与FPGA之间的通信和数据传递,并运用FPGA良好的计算性能,完成相应的数据处理。具体功能描述如下:PC通过串口传输文件数据到FPGA;FPGA接收PC发送的数据,进行huffman编码,然后将处理结果返回到PC;PC通过串口接收返回的数据,用户可以查看运算结果。实验原理Huffman编码的原理Ascii编码共128种,每一种用八位来进行编码表示,是一种十分平均的编码,huffman编码通过统计字符出现的频率来进行编码,因此编码是不等长的,这样可以根据不同的文章产生对应的唯一编码,从而达到最短。通常通过建立Huffman树来进行编码。FPGA原理FPGA是即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。因为任何一个逻辑表达式都可以表示成最小项之和的形式,根据这些阵列可以将任何一个与逻辑和或逻辑通过门硬连线得到,即可以实现任何逻辑。本实验通过C语言描述逻辑,通过软件转化为对应的逻辑门电路。开发环境描述软件配置该系统设计是基于Windows 7操作系统,开发环境是ISE 12.3。使用EDK建立片上系统环境,通过visual Studio进行PC端的调试,确定基本的编写方法后在ISE上进行移植。通过串口调试软件进行与硬件之间的数据传输。创建工程:保持默认设置,连续点击4次next,打开Default Part配置界面,点击Board选项创建工程创建GPIO ip核选择Generate HDL Wrapper,生成顶层文件生成比特流文件。点击菜单栏的File,选择Export →Export Hardware for SDK 点击Board Support Package,新建板级支持包击Application Project,新建软件工程ZED板子线插好 运行硬件配置通过ZedBroad作为实验平台,其中包含一个大型的FPGA核心,512Mb的DDR3类型存储器。实验设计方案Huffman编码的PC端实现基本数据结构Data类struct data {char t;int count;data * Next;data * Lchild;data * Rchild;};T记录当前节点的字母。Count记录当前字母的频数。Next为链表的后继节点。Lchild记录该节点的左孩子。Rchild记录该节点的右孩子。Code类struct Code{char t;char s[24];bool flg;int length;int count;};T记录当前节点的字母。S数组记录编码。Flg记录是否有效。Count记录当前字母的频数。Length记录当前编码的长度。LList类struct LList{char c;LList *Lchild;LList *Rchild;};C记录当前节点的字母。Lchild记录左孩子。Rchild记录右孩子。基本函数GetInfochar* GetInfo(FILE *fp,int *t,int *s,data all[],Code TheCode[]){int i;//循环变量//FILE *temp=fp;for (i=0;i128;i++)//为all初始化{all[i].t=i;all[i].count=0;all[i].Next=NULL;all[i].Lchild=NULL;all[i].Rchild=NULL;}char c;while ((c=fgetc(fp))!=EOF)//读入外部数据{if(c=0c=127){//printf(%c,c);if(all[int(c)].t==c)all[int(c)].count++;(*t)++;//计算}}fseek(fp, 0, SEEK_SET);char *allchar=(char*)malloc(sizeof(char)*(*t));//char *temp=allchar;int ii=0;while ((c=fgetc(fp))!=EOF)//读入外部数据{if(c=0c=

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档