基于FPGA的Huffman编码压缩说明书.docx

上传人:h**** 文档编号:144857 上传时间:2018-07-11 格式:DOCX 页数:60 大小:2.59MB
下载 相关 举报
基于FPGA的Huffman编码压缩说明书.docx_第1页
第1页 / 共60页
基于FPGA的Huffman编码压缩说明书.docx_第2页
第2页 / 共60页
基于FPGA的Huffman编码压缩说明书.docx_第3页
第3页 / 共60页
基于FPGA的Huffman编码压缩说明书.docx_第4页
第4页 / 共60页
基于FPGA的Huffman编码压缩说明书.docx_第5页
第5页 / 共60页
点击查看更多>>
资源描述

1、- 0 - 基于 FPGA 的 Huffman 编码压缩 1 目录 实验目的 . 2 实验原理 . 2 Huffman 编码的原理 . 2 FPGA 原理 . 2 开发环境描述 . 2 软件配置 . 2 硬件配置 . 7 实验设计方案 . 8 Huffman 编码的 PC 端实现 . 8 基本数据结构 . 8 基本函数 . 9 程序流程 . 20 Huffman 编码的 FPGA 端实现 . 21 基本数据结构 . 21 基本函数 . 21 程序流程 . 25 实验步骤过程 . 26 PC 端实验流程步骤 . 26 FPGA 端实验流程步骤 . 26 实验结果 . 29 PC 端实验结果 .

2、29 FGPA 端实验结果 . 30 实验心得体会 . 30 2 实验目的 实现 Huffman 编码在 FPGA 端的实现,通过实验学习 Huffman 编码的原理,串口通讯的原理以及对 FPGA 的深入了解。学习 Xilinx 的 SDK 使用方法和基本的 Vivado 使用方法。 本设计实现 PC 与 FPGA 之间的通信和数据传递,并运用 FPGA 良好的计算性能,完成相应的数据处理。具体功能描述如下: 1. PC 通过串口传输文件数据到 FPGA; 2. FPGA 接收 PC 发送的数据,进行 huffman 编码,然后将处理结果返回到 PC; 3. PC 通过串口接收返回的数据,用

3、户可以查看运算结果。 实验原理 Huffman 编码的原理 Ascii 编码共 128 种,每一种用八位来进行编码表示,是一种十分平均的编 码, huffman编码通过统计字符出现的频率来进行编码,因此编码是不等长的,这样可以根据不同的文章产生对应的唯一编码,从而达到最短。 通常通过建立 Huffman 树来进行编码。 FPGA 原理 FPGA 是即现场可编程门阵列,它是在 PAL、 GAL、 CPLD 等可编程器件的基础上进一步发展的产物。因为任何一个逻辑表达式都可以表示成最小项之和的形式,根据这些阵列可以将任何一个与逻辑和或逻辑通过门硬连线得到,即可以实现任何逻辑。 本实验通过 C 语言描

4、述逻辑,通过软件转化为对应的逻辑门电路。 开发环境描述 软件配置 该系 统设计是基于 Windows 7 操作系统,开发环境是 ISE 12.3。使用 EDK 建立片上系统环境,通过 visual Studio 进行 PC 端的调试,确定基本的编写方法后在 ISE 上进行移植。通过串口调试软件进行与硬件之间的数据传输。 创建工程: 3 保持默认设置,连续点击 4 次 next,打开 Default Part 配置界面,点击 Board 选项 创建工程 4 创建 GPIO ip 核 选择 Generate HDL Wrapper,生成顶层文件 5 生成比特流文件。 点击菜单栏的 File, 选择

5、 Export Export Hardware for SDK 6 点击 Board Support Package,新建板级支持包 击 Application Project,新建软件工程 7 ZED 板子线插好 运行 硬件配置 通过 ZedBroad 作为实验平台,其中包含一个大型的 FPGA 核心, 512Mb 的 DDR3 类型存储器。 8 实验设计方案 Huffman 编码的 PC 端实现 基本数据结构 Data 类 struct data char t; int count; data * Next; data * Lchild; data * Rchild; ; T 记录当前节点

6、的字母。 Count 记录当前字母的频数。 Next 为链表的后继节点。 Lchild 记录该节点的左孩子。 Rchild 记录该节点的右孩子。 Code 类 struct Code char t; char s24; bool flg; int length; int count; ; T 记录当前节点的字母。 S 数组记录编码。 Flg 记录是否有效。 Count 记录当前字母的频数。 Length 记录当前编码的长度。 9 LList 类 struct LList char c; LList *Lchild; LList *Rchild; ; C 记录当前节点的字母。 Lchild 记录左孩子。 Rchild 记录右孩子。 基本函数 GetInfo char* GetInfo(FILE *fp,int *t,int *s,data all,Code TheCode) int i;/循环变量 / FILE *temp=fp; for (i=0;i=0 if(allint(c).t=c) allint(c).count+; (*t)+;/计算 fseek(fp, 0, SEEK_SET); char *allchar=(char*)malloc(sizeof(char)*(*t); /char *temp=allchar;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。