首页
会员中心
到顶部
到尾部
计算机

快速哈达玛变换设计与实现

时间:2020/10/27 9:25:38  作者:  来源:  查看:0  评论:0
内容摘要:毕业设计选题目的及意义在通信编码技术中越来越多的使用到了哈达玛变换。由于它的折叠结构在一定程度上可以节约芯片资源,这对硬件实现起着相当重要的作用。该选题需要完成的主要是快速哈达玛变换的设计及其VHDL硬件描述,最终目的是把它应用到3GPP、H.263、CDMA这些领域中去。而该设...

毕业设计选题目的及意义
在通信编码技术中越来越多的使用到了哈达玛变换。由于它的折叠结构在一定程度上可以节约芯片资源,这对硬件实现起着相当重要的作用。该选题需要完成的主要是快速哈达玛变换的设计及其VHDL硬件描述,最终目的是把它应用到3GPP、H.263、CDMA这些领域中去。而该设计的主要目的就是为了设计出一种简单而且快速的算法实现快速哈达玛变换。设计的优劣直接关系到运算的效率和资源的利用。因此,该课题具有很高的实用价值。
1.4 主要研究内容
首先,本文研究了快速哈达玛变换的基本原理,哈达玛变换的基本公式,以及它可以实现快速算法的原因;其次,快速哈达玛变换在FPGA中的实现也是该研究的一个重点。
论文的章节安排如下:
第二章介绍了快速哈达玛算法;
    第三章介绍了VHDL软件的开发环境和具体的应用,主要是编程的应用;
第四章介绍了结合以上二者,用VHDL语言来进行快速哈达玛算法的设计及实现;
第五章介绍了实验调试的结果以及其分析;
设计与实现
3.1  EDA设计平台
这里的所谓 EDA主要是指数字系统的自动化设计,因为这一领域的软硬件方面的技术已比较成熟,应用的普及程度也已比较大。而模拟电子系统的EDA正在进入实用。此外,由于电子信息领域的全面数字化,基于EDA的数字系统的设计技术具有更大的应用市场和更紧迫的需求性。
利用EDA技术进行电子系统设计的特点:软件的方式设计硬件;用软件方式设计的系统到硬件系统的转换是由有关开发软件自动完成的;设计过程中可用有关软件进行仿真;系统可现场编程,在线升级;整个系统可集成在一个芯片上,体积小、功耗低,可靠性高。
程序语言输入就是使用硬件描述语言HDL,在EDA软件提供的设计向导或语言助手的支持之下进行设计。HDL语言设计是目前工程设计最重要的设计方法。     VHDL语言已成为EDA设计中信息交换的重要标准,它较为注重的规范化与标准化,使得VHDL语言系统庞大,语法规则较为复杂,但功能却非常强大。它有许多突出的优点:如语言与工艺的无关性,可以使设计者在系统设计、逻辑验证阶段便确立方案的可行性;又如语言的公开可利用性,使它们便于实现大规模系统的设计等;同时硬件描述语言具有很强的逻辑描述和仿真功能,而且输入效率高,在不同的设计输入库之间转换非常方便。
因此,运用VHDL设计已是当前的趋势。各种EDA工具都集成了VHDL编译与综合工具。
1. 进程PROCESS语句的结构
PROCESS(信号1,信号2,…)
     BEGIN
         ……
END   PROCESS;
在系统仿真时,PROCESS结构中的语句是按顺序一条一条向下执行。同一结构体有多个进程存在,各个进程之间可以一边进行通讯,一边并行同步执行。
 2.子程序(SUPROGRAM)语句结构
子程序是主程序调用它以后能将处理结果返回主程序的程序模块,它可以反复调用。VHDL的子程序有过程(PROCEDURE)和函数(FUNCTION)两种类型。procedure可返回多个值(无return),或不返回值,可改变其它值;function只返回一个值(用return),且不改变其它值。
3.过程与函数的差异
(1)函数所有参数都是输入信号,其输出信号只有一个,即,返回值。所以,在函数声明中,参数的输入输出状态不必写明。
(2) 过程的参数有可能是输入信号,有可能是输出信号,INOUT 信号,所以在其声明中必须要标清楚。
(3) 函数的调用可在architecture中的任何位置,但过程调用必须在PROCESS 中 。
表3-1  VHDL语言客体及其分类
客体类型 含义 说明场合
信号 信号说明全局量 ARCHITECTURE,PACKAGE,ENTITY
变量 变量说明局部量 PROCESS,FUNCTION,PROCEDURE
常量 常数说明全局量 上下两种场合下,均可存在
 4. 变量和信号的不同
(1)信号的赋值至少有延迟,而变量赋值没有延迟。
(2)信号有许多相关信息,而变量只有当前值。
(3)作用范围不同。
(4)信号是硬件连线的抽象,而变量无类似的对应关系。
(5)变量的值可以传给信号,而信号的值不能传给变量
 5.设计过程中的有关仿真
    所谓行为仿真,就是将VHDL设计源程序直接送到VHDL仿真器中所进行的仿真。该仿真只是根据VHDL的语义进行的,与具体电路没有关系。
    功能仿真,就是将综合后的VHDL网表文件再送到VHDL仿真器中所进行仿真。这时的仿真仅对VHDL描述的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求,仿真过程不涉及具体器件特性,如延时特性。
时序仿真,就是将步线器/适配器所产生的VHDL网表文件送到VHDL仿真器中所进行的仿真。该仿真已将器件特性考虑进去了,因此可以得到精确的时序仿真结果。
逻辑综合和优化所谓逻辑综合,就是将电路的高级语言描述转换成低级的,可与FPGA/CPLD或构成ASIC的门阵列基本结构相映射的网表文件。由于VHDL仿真器的行为仿真功能是面向高层次的系统仿真,只能对VHDL的系统描述作可行性评估测试,不针对任何硬件,因此基于这一仿真层次的许多VHDL语句不能被综合器所接受。
3.2 哈达玛变换中辅助同步码算法分析
传统的辅同步码序号的识别实现方法是将SSCH与所有可能的辅同步码序列作相关运算, 根据最大值确定SSC 序列号。这样相关运算就需要进行一次16×256 阶矩阵与256 比特序列的矩阵乘法。分析辅助同步码的产生方法, 通过引入快速哈达玛变换(FHT) 对相关运算部分进行简化, 可以降低花费在实现相关运算上的硬件资源。
3.2.1  辅助同步码产生方法
首先构造序列b 以及序列Z :
 b = (1, 1, 1, 1, 1, 1, - 1, - 1, - 1, 1, - 1, 1, - 1, 1, 1, - 1)
 Z = (b, b, b, - b, b, b, - b, - b, b, - b, b, - b, - b, - b, - b, - b)
则辅助同步码码组{C1, …, C16} 就是Z 序列分别与16 个哈达玛序列对应比特位相乘得到的。这16 个哈达玛序列分别是256 阶哈达玛矩阵的第i × 16 行, 其中i = 0, 1, …, 15。我们用hn ( i) 和z ( i) 分别表示哈达玛序列hn 和Z 序列的第i 个比特, 则
 Cm = 〈h (0)z(0) , hn(1)z(1) , hn(2)z(2) , …, hn(255)z(255) 〉
其中m 表示辅助同步码的序号, 且m = 1, 2, 3, …,16; n = 16(m - 1)
哈达玛矩阵可以用下式递推得到:
 ,                   (3-1)
H2为2 × 2 阶的哈达玛矩阵, HN 表示一个N ×N 阶的矩阵,N 为大于2 的正整数。
3.2.2  算法分析
通过辅同步码的构成可知, 辅同步码是由Z 序列和不同的哈达玛序列模二和构成的, 因此只需将接收到的辅同步信道上的信号与序列Z 作乘法运算, 辅同步码序列就转化成哈达玛序列, 前提是需要得到准确的时隙边界。这样辅同步码序号识别问题就可以转化为哈达玛序列的行序号识别问题。而哈达玛序列的行序号识别问题又可以通过快速哈达玛变换实现。
一个1 ×N 维的输入矢量X 的一维快速哈达玛变换(fast Hardamard transform: FHT ) 可以定义为这个输入矢量与一个N ×N 阶的哈达玛矩阵H进行矩阵乘法, 表达式如下:
Y = FHT [X ] = HX                        (3-2)

输出序列Y 实际就是序列X 与哈达玛矩阵H的各个行的相关值。我们只需找出Y 的最大值就可以判定X 的哈达玛序列号。
 我们将产生辅助同步码序列的16 个256 比特的哈达玛序列按行排列组成一个16×256 阶的矩阵, 用H 256- 16 表示。通过对矩阵H 256- 16 仔细观察发现, 它可以用(3-3) 式表示:
H 256- 16 = H 16 I 16                          (3-3)

 式中I 16 为1×16 阶的全1 矢量。H 16为16×16 阶哈达玛矩阵。运算符 定义如下: 设H a×b 和H c×d 分别为a×b 阶和c×d 阶矩阵,那么H a×b H c×d =H ac×bd 的阶数为ac × bd , 如果H a×b 矩阵中的一个元素为+ 1 (或者逻辑值0) , 那么用H c×d 代替, 如果该元素为- 1 (或者逻辑值1) , 那么用-H c×d (或者H c×d 的补) 代替。 
这样, H256-16与序列X的乘法就可以用式(3-4)表示:
     (3-4)
  从(3-4) 式可以得出, 只需将序列X 每16 个数累加后再对累加和序列进行16 阶的FHT 就可以实现与序列X 的矩阵乘法运算。这样相关运算实现的复杂度会大大降低。
3.3 哈达玛变换的全并行结构
从前面的快速哈达玛变换的算法分析可以很容易的得到快速哈达玛变换的基本蝶形运算结构如图所示:
                    
图3-1快速哈达玛变换的两点蝶形运算
这里需要减法运算,在设计程序时,可用将减数变为负数的补码,通过这样一个转化,可以将减法运算变换成加法的形式。
从以上分析可以得出16输入的快速哈达玛变换的蝶形运算示意图为:

X                                                                Y
图3-2 快速哈达玛变换的蝶形运算
由快速哈达玛的算法表示可知,哈达玛变换可以分为 级进行,其中每一级完成由稀疏矩阵 与上一级运算的结果向量相乘,其运算结构如图3-3所示:
从图3-4(a)可以看出,在快速哈达玛的直接实现结构中,每一级完成运算需要 个如图3-4(b)所示的蝶形运算单元,即:需要 个加法器(加法器的位宽由输入数据的位宽决定),又因为整个快速哈达玛运算共有 级,因此直接实现结构总共需要 个加法器。例如当 时,加法器数目为384个。
在CDMA2000前想信道中使用了的最大阶数为256,如果采用直接结构,那么将需要2048个加法器。这是一个非常消耗资源的部分,在芯片资源紧缺及价格等因素的限制下,必须考虑采用折叠(folding)技术复用功能单元从而减少资源的消耗,根据折叠的功能单元不一样,可以设计不同层次的折叠结构。

Tags:



相关评论
广告联系QQ:45157718 点击这里给我发消息 电话:13516821613 杭州余杭东港路118号雷恩国际科技创新园  网站技术支持:黄菊华互联网工作室 浙ICP备06056032号