1、目 录1 原理与系统设计2 模块设计21 时序控制模块3综合后的整体电路图4 源码与注释5 结论6 心得体会与建议参考文献11 原理与系统设计由于符号交织为块交织,所以必须需要大量的存储单元。在设计中我们采用两个长度为2048、数据宽度为1 位的单口RAM 进行读写,以保证解交织输出数据能连续不断的进行。当左RAM 区进行写操作时,右RAM区正进行读操作;反之也是如此。这样就保证了能连续不断地处理数据。图5 中的地址发生模块主要功能是产生读地址和写地址,读写地址分别送入到地址切换模块,在读写控制线的控制下,使得左RAM 区和右RAM区一个处于读数据状态时,另一个处于写数据状态。在符号交织过程中
2、,根据q 产生相应的排列函数H(q),输出就由H(q)顺序读出位置上的输入数据。解符号交织时,把读写对换过来即可。构造一个模1512的计数器,在每一个1512循环过程中,地址产生器顺序生成11位的地址H(q)。符号解交织时,以H(q)作为RAM的写地址,把输入数据按序写入RAM。计数器图1 2K模式中符号交织器地址产生模块原理图图2 解交织译码器总体模块设计满1512 时,产生一个左右RAM 切换信号,并通知时序控制模块开始按RAM中存储的地址开始读刚刚写入数据的左(右)RAM,再把数据顺序读出,这样就得到了与符号交织的输入相同的数据,从而实现了符号解交织。上述解交织模块中,地址发生和控制切换
3、是难点。为了简化设计,我们采用了一种简单易行,并且可靠的方法来实现读地址码的生成:查表法。如图2-4所示:图3 查表实现把地址码预先存到一块ROM 中,当ROM 的地址输入端输入0,1,2,3,1511顺序地址时,ROM 的数据输出端就产生出RAM 读取所需要的地址序列。这里我们采用一块长度为2048,数据宽度为11 位的ROM。至于读地址码的生成则用高级语言实现。用高级语言把地址码按照文件的格式输出到存储器的初始化文件rom.inf 并设置此ROM 的初始化文件为rom.inf 即可。而写地址的产生,只需构造一个模为1512 的计数器即可。当计数器满1512 时,产生一个左右RAM 切换信号
4、,并通知时序控制模块开始按RAM中存储的地址开始读刚刚写入数据的左(右)RAM。经过符号解交织模块后出来的数据宽度为V ,为了进行下一步的比特解交织,需要引入并) 串转换模块,使得比特解交织可以处理比特流。2 模块设计由解交织器设计的原理可知,解交织器由五个模块构成:时序控制模块,符号解交织地址产生模块,符号解交织存储模块,位解交织地址产生模块和位解交织存储模块。设计过程中使用VHDL语言对各模块进行编程,波形仿真过程使用Max+plus10.0,使用Synplicity Pro 7.6进行综合。21 时序控制模块211模块示意图212 输入输出描述输入:clk_in,接入系统时钟,作为内部模
5、1512计数器和模6计数器的时钟。输出:c1,模1512计数器的进位输出,当计数器计满一次时,c1翻转一次;c2,模126计数器的进位输出,当计数器计满一次时,c2翻转一次,因为模126计数器的时钟是基准时钟的6倍,所以c2实际上是756个时钟周期翻转一次;cn1,模1512计数器的输出,数据宽度为11位,输出范围为0到1511;cn2,模6计数器的输出,数据宽度为3位,输出范围为0到5;cn3,模126计数器的输出,数据宽度为7位,输出范围为0到125。213 波形仿真214 时序、逻辑分析由以上仿真波形可以看出:模1512计数器和模6计数器采用的是系统基准时钟,而模126计数器的时钟周期则
6、是基准时钟周期的6倍。这样经过756个基准时钟周期,模126计数器才计满一次,输出c2才翻转一次。经过1512个始终周期,模1512计数器计满一次,其进位输出c1翻转一次。该模块的最大延时为11.0ns 。215寄存器传输级电路原理图(按照上面格式继续其它模块报告)3综合后的整体电路图4 源码与注释 源码尽量按照上课讲过的风格来写,并一定要有详尽的注释。5 结论告诉读者是否完成设计指标和设计任务,完成情况如何,对于未能完成的任务要说明原因。给出未来努力目标。6 心得体会与建议这部分是重点,占整个报告分值的20%(包括在整个设计过程中软件使用或者代码编写、波形分析等中遇到的问题和解决问题的办法)给出小组成员各自在题目中的工作任务和工作量(百分比表示)。参考文献