5B6B线路码编译码的电路设计概要_第1页
5B6B线路码编译码的电路设计概要_第2页
5B6B线路码编译码的电路设计概要_第3页
5B6B线路码编译码的电路设计概要_第4页
5B6B线路码编译码的电路设计概要_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 *实践教学*兰州理工大学计算机与通信学院2015年秋季学期通信系统综合训练 题 目: 5B6B线路码的电路设计 专业班级: 通信工程(1)班 姓 名: 学 号: 指导教师: 成 绩: 摘 要在光纤通信系统中,选取适当的码型对提高系统的可靠性,实现线路的高速、低误码率、最大容量传输具有重要意义。 5B6B码是mBnB线路码型中的一种,具有最大相同码元连码数少、定时信息丰富、匀衡性好、误码监视、同步性好等优点。5B6B编码是将5B码组按照一定的规律,编成6B码组后输出;而译码则是将传输到接收端机的6B数据码流,译成5B数据码流输出,二者互为逆过程。5B6B编码和译码有许多种设计方法,本

2、文采用的是基于码表的编译码电路设计,结合Quartus II软件写出编译码过程从具有相应功能的程序,封装成模块,最后集成完整的编译码电路,并且对每个模块及编译码电路进行波形仿真,检验设计的正确性。关键字:5B6B线路码、编译码、分频、封装目 录前 言4一、光纤通信系统51.1 光纤通信系统基本构成51.2数字光纤通信系统61.3光纤通信技术的特点6二、 光纤通信中的线路编码72.1线路扰码72.2 mBnB码72.3插入码7三、 设计平台(Quartus II 软件)83.1 Quartus II软件介绍83.2 Quartus II系统开发流程8四、系统设计104.1 5B6B码表设计104

3、.2 编码电路设计10 4.2.1 编码原理10 4.2.2 各模块的设计及仿真11 4.2.3 编码电路设计与仿真134.3 译码电路设计15 4.3.1 译码原理15 4.3.2 各模块的设计及仿真15 4.2.3 译码电路设计与仿真18总 结20参考文献21附录:编译码各模块的程序22前 言mBnB码是把输入的二进制原始码流进行分组,每组有m个二进制码,记为mB,称为一个码字,然后把一个码字变换为n个二进制码,记为nB,并在同一个时隙内输出。这种码型是把mB变换为nB,所以称为mBnB码,其中m和n都是正整数, n>m,一般选取n=m+1。mBnB码有1B2B、3B4B、5B6B、

4、 8B9B、 17B18B等等。5B6B码是mBnB线路码型中最常见的一种,具有最大相同码元连码数少、定时信息丰富、匀衡性好、误码监视、同步性好等优点。5B6B编码是将自编数据按照一定的规律,编成6B码组后输出;而译码则是将传输到接收端机的6B数据码流,译成5B数据码流输出,二者互为逆过程。5B6B编码和译码有许多种设计方法,其中主要有基于集成电路工艺ASIC(专用集成电路)和基于码表设计。本文运用Quartus II软件,采用基于码表设计的方法对5B6B码进行编码和译码。其中编码由分频模块、编码模块、五位串转换模块及六位并串转换模块构成;译码部分由译码模块、分频模块、六位串及五位并转换模块构

5、成。本文着重介绍了编码译码的工作原理以及各模块的封装,并对程序和电路编译码进行仿真,最终得出正确的结果。以实现5B6B线路码的编码和译码在理论上的功能。一、光纤通信系统随着科学技术发展,世界正走向信息时代,人们需要更宽带、更高速的大容量通信方式,并要求这种通信方式的传输成本不断降低。光纤通信则是实现这一目标的最理想手段,成为构筑信息化时代信息传输网的主要通信方式。光缆是通信网络的主流传输媒介,这是由光纤本身的良好特性所决定的。光纤通信是以激光为信息载体,以光纤为传输介质的通信方式。1.1 光纤通信系统基本构成最基本的光纤通信系统由数据源、光发送端、光学信道和光接收端组成。其中数据源包括所有的信

6、号源,它们是话音、图象、数据等业务经过信源编码所得到的信号;光发送端和负责将信号转变成适合于在光纤上传输的光信号;光学信道包括最基本的光纤,还有中继放大器EDFA等;而光学接收端则接收光信号,并从中提取信息,然后转变成电信号,最后得到对应的话音、图象、数据等信息。图1-1 光纤通信系统的组成(1) 光发信机光发信机是实现电/光转换的光端机。它由光源、驱动器和调制器组成。其功能是将来自于电端机的电信号对光源发出的光波进行调制,成为已调光波,然后再将已调的光信号耦合到光纤或光缆去传输。电端机就是常规的电子通信设备。 (2) 光收信机光收信机是实现光/电转换的光端机。 它由光检测器和光放大器组成。其

7、功能是将光纤或光缆传输来的光信号,经光检测器转变为电信号,然后,再将这微弱的电信号经放大电路放大到足够的电平,送到接收端的电端汲去。(3) 光纤或光缆光纤或光缆构成光的传输通路。其功能是将发信端发出的已调光信号,经过光纤或光缆的远距离传输后,耦合到收信端的光检测器上去,完成传送信息任务。 (4)中继器中继器由光检测器、光源和判决再生电路组成。它的作用有两个:一个是补偿光信号在光纤中传输时受到的衰减;另一个是对波形失真的脉冲进行整形。(5)光纤连接器、耦合器等无源器件由于光纤或光缆的长度受光纤拉制工艺和光缆施工条件的限制,且光纤的拉制长度也是有限度的(如1Km)。因此一条光纤线路可能存在多根光纤

8、相连接的问题。于是,光纤间的连接、光纤与光端机的连接及耦合,对光纤连接器、耦合器等无源器件的使用是必不可少的。1.2数字光纤通信系统光纤传输系统是数字通信的理想通道。与模拟通信相比较,数字通信有很多的优点,灵敏度高、传输质量好。因此,大容量长距离的光纤通信系统大多采用数字传输方式。在光纤通信系统中,光纤中传输的是二进制光脉冲"0"码和"1"码,它由二进制数字信号对光源进行通断调制而产生。而数字信号是对连续变化的模拟信号进行抽样、量化和编码产生的,称为PCM,即脉冲编码调制。这种电的数字信号称为数字基带信号,由PCM电端机产生。1.3光纤通信技术的特点 (

9、1)频带极宽,通信容量大。光纤比铜线或电缆有大得多的传输带宽,光纤通信系统的于光源的调制特性、调制方式和光纤的色散特性。 (2)损耗低,中继距离长。目前,商品石英光纤损耗可低于020dB/km,这样的传输损耗比其它任何传输介质的损耗都低;若将来采用非石英系统极低损耗光纤,其理论分析损耗可下降的更低。这意味着通过光纤通信系统可以跨越更大的无中继距离;对于一个长途传输线路,由于中继站数目的减少,系统成本和复杂性可大大降低。 (3)抗电磁干扰能力强。光纤是由石英制成的绝缘体材料,不易被腐蚀,而且绝缘性好。 (4)无串音干扰,保密性好。在电波传输的过程中,电磁波的泄漏会造成各传输通道的串扰,而容易被窃

10、听,保密性差。光波在光纤中传输,因为光信号被完善地限制在光波导结构中,而任何泄漏的射线都被环绕光纤的不透明包皮所吸收,即使在转弯处,漏出的光波也十分微弱,即使光缆内光纤总数很多,相邻信道也不会出现串音干扰,同时在光缆外面,也无法窃听到光纤中传输的信息。除以上特点之外,还有光纤径细、重量轻、柔软、易于铺设;光纤的原材料资源丰富,成本低;温度稳定性好、寿命长。由于光纤通信具有以上的独特优点,其不仅可以应用在通信的主干线路中,还可以应用在电力通信控制系统中,进行工业监测、控制,而且在军事领域的用途也越来越为广泛。二、 光纤通信中的线路编码信号在光纤中传输时,需将简单的二进制信号变换成适合光纤传输系统

11、的光线路码型。而线路码型有多种,在选择线路码时不仅要考虑光纤的传输特性,还要考虑光电器件的特性。在光纤通信系统中,常用的线路码型有:扰码,mBnB码以及插入码。2.1线路扰码线路扰码就是对输入的二进制序列进行转换,这样这个二进制序列就会接近随机的序列。然后再接收端再将扰码解扰还原,因此保证了信息传输的透明度。在系统光发射机的调制器前面可以增加一个扰码器,这样做的目的是保证传输的透明性,以此来将原始的二进制码序列进行一些简单的变换,让其基本上接近于随机序列。如:扰码前序列:1100000011000扰码后序列:1101110110011m序列可以用来实现扰码器,在发射端产生m序列,然后将m序列与

12、信息序列做模二加的运算,这样输出来的就是经过加扰的随机序列了。解扰器在使用相同的扰码序列与接收到的序列做模二加运算,用来恢复原始的信息。扰码也有它的一些缺点:不能控制连续码的出现;不能在线误码检测;不能够解决随机波动。2.2 mBnB码该码型又称为块码、分组码以及字母平衡型码等等。在一般情况下都是n>m。将输入的二进制码每mB分成一组作为一个码字,将输入的码字在相同的时间间隔内,根据一定的编码规则,将其变换成nB一组的新码字,最后以不归零或归零格式传输这些新码流,此新码就是mBmB码。m,n都为正整数,且多数用n=m+1这种形式,经过一些变换,线路码速率就会相比原二进制码率提高了n/m倍

13、。常见的有1B2B,2B3B,3B4B,4B5B,5B6B码,8B9B等,其中5B6B码在高次群光纤通信系统中用得比较频繁。mBnB码的编码原理以最简单的1B2B码(曼彻斯特码)即将原码中的“0”码变换为“01”码,将“1”码变成“10”码。2.3插入码插入码是将原始输入的二进制码按照每m比特一组进行分组操作,然后在每组码的后面插入一个码字,组成一组新的线路码型长度为m+1,插入码根据其插入码字的规律不同可以分为以下几种码型:mB1C码、mB1H码以及mB1P码。三、 设计平台(Quartus II 软件)图3-1 Quartus II 软件运行窗口3.1 Quartus II软件介绍Quar

14、tus II 是Altera公司的综合性PLD/FPGA开发软件该软件。该界面友好,使用便捷,功能强大,是一个完全集成化的可编程逻辑设计环境,是先进的EDA工具软件。它具有开放性、与结构无关、多平台、完全集成化、丰富的设计库、模块化工具等特点,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II是适合单芯片可编程系统(SOPC)的最全面的设计环境。Qu

15、artus II软件所支持的器件有很多,如max3000A、max 7000B、max 7000S、max7000AE、max2、mercury、cyclone、cyclone 2、stratix2、stratix GX、flex6000、flex10K、flex10KA以及flex0KE等。该软件包的编程器可以提供功能强大的设计处理,因为它是整个系统的主要部分,设计者可以通过增加一定的约束条件来提高芯片的利用率。Quautus2软件有它自带的仿真器与综合器,这些可以用来完成从设计输入到硬件配置的整个设计过程。它可以支持altera的ip核,并且含有一些宏功能模块库。3.2 Quartus I

16、I系统开发流程(1)创建工程文件在Quartus II软件上创建一个新的工程。所谓工程就是你的设计的描述、设置、数据以及输出的整个集合,此软件会将这些存储在不同类型文件集中放在同一个文件夹下,所以要创建一个工程。创建一个新的工程步骤如下:1 打开Quartus II软件,点击“File”,选择“New Project Wizard”;2 在新弹出的窗口中分别键入新工程的工作路径、项目名称以及实体名称,且项目名称和实体名称要一致;3 用鼠标点击下方的“finish”按钮即可完成对新工程的创建。(2)设计输入在设计输入之前还有重要的一步是电路的设计部分,在整个系统的设计之前首先必须进行的是方案的论

17、证、系统的设计以及FPGA芯片的选择等等。一般来说采用的设计方案都是自顶向下的,即将整个系统划分为若干个小模块,然后再每个模块划分为下一个层次的小模块,直到直接可以调用元件库里的元件。(3)设计项目编译 打开“Processing”菜单,点击“Start Compilation”即可执行项目的编译功能,编译器将运行预先指定的各个模块的功能。编译成功后,编译器将会产生相应的输出文件。如果有错误出现,编译器将停止编译,并会相应的给出错误的信息栏,用鼠标点击“error”的信息条,一般下可以指出错误的地方,以便修改,直至所有的错误均消除后,系统就会弹出编译成功的窗口。(4)项目的仿真仿真检

18、查综合结果是否与原先要设计的项目功能是否一致。项目的编译成功,需要做的就是对每个模块的功能进行仿真测试,来查看设计的结果是否满足原先设计的基本要求。仿真分为功能仿真、时序仿真以及波形仿真。功能仿真仅仅测试设计的逻辑功能;而时序仿真首先要测试逻辑的功能,而且还要测试有关设计的一些目标器件;波形仿真是在波形编辑器中将设计的逻辑功能用波形图的形式显示,通过查看波形图来检查设计的逻辑功能是否符合设计的要求。波形仿真的步骤包括新建波形文件、设置波形仿真器、插入仿真节点、编辑输入波形、运行仿真器、检查输出波形是否符合设计要求等。四、系统设计4.1 5B6B码表设计码表设计的原则是:(1)“0”码和“1”码

19、出现的概率相等;(2)减小最大同符号连续数的数目;(3)选取游程差值D值小的码组。为了达到以上设计目标,引入模式概念。6B码有模式1和模式2。定义模式1为正,模式2为负;模式1和模式2交替出现。设计的码表为:表4-1 5B6B码表4.2 编码电路设计4.2.1 编码原理5B6B编码电路模型如下图,包括时钟控制模块、串并转换模块、存储器模块、并串转换模块等组成。图4-1 编码部分系统框图编码电路原理是一个本地振荡器产生一个标准时钟,有频变电路产生的时钟用于编码电路工作的输出电路的时钟,他们之间的关系是缓冲电路接收5位输入码存储为一个编码器,这个编码器电路中,根据5B6B码表输出6位代码。再将这6

20、位码在时钟脉冲的驱动下在进行并串转换来输出。4.2.2 各模块的设计及仿真(1)时钟控制模块(分频模块)该模块主要是实现一个时钟分频的功能。本设计需要用到一个五分频和一个六分频分别为后面五位串并转换模块和六位并串转换模块提供时钟,通过Quartus II封装后的图形如下: 图4-2 五分频器模块 图4-3 六分频器模块设置好相应的输入后分频模块的仿真波形如下:图4-4 五分频模块的仿真图4-5 六分频模块的仿真 图中clk为系统时钟输入,clk5 为五分频后的时钟输出,clk6为六分频后的时钟输出。(2)串并转换模块该模块主要实现串行数据输入转换为并行数据输出,输入的为5位的串行数据,输出的为

21、5位并行的数据,通过Quartus II封装后的图形如下图: 图4-6 5位串并转换模块设置好相应的输入和输出后串并转换模块仿真波形如下:图4-7 5位串并转换模块的仿真图中图中clk为系统时钟输入,clk5为五分频后的时钟输入,shift_in为串行的5B码组输入,A为并行的5B码组输出。任选一个码组10110,从仿真结果中可以看出,在第五个时钟周期结束后并行输出的码组为10110,验证了仿真的正确性。(3)编码模块该模块主要实现5B数据转换为6B数据的一个功能,其实质的事一个PROM,通过程序把5B6B码表存储起来,然后如果输入一个5B的数据,通过查表后输出一个对应的6B数据,从而实现5B

22、转6B的功能,通过Quartus II封装后的图形如下图:图4-8 编码模块设置好相应的输入和输出后六分频器的仿真波形如下:图4-9 存储模块(编码模块)的仿真 图中clk为系统时钟输入;F为模式选择位,0表示选择模式1,1表示选择模式2;Y位并行的5B码组输入,Q为并行的6B码输出。通过Y和Q的码组可以发现,当输入00000时输出110010,当输入00001时输出100001,只不过延迟了半个时钟周期。与5B6B编码表中进行对比可以证明仿真结果是正确的。(4)并串转换模块该模块主要实现并行数据输入转换为串行数据输出,输入的为6位并行的数据,输出的为6位串行数据,通过Quartus II封装

23、后的图形如下图:图4-10 6位并串转换模块设置好相应的输入和输出后并串装换模块的仿真波形如下:图4-11 6位并串转换模块的仿真图中clk0表示系统时钟6分频后的时钟输入,clk为系统时钟输入,Q为并行的6B码组输入,shift_out为串行的6B码组输出。选用任意一个码组100100测试,shift_out第六个周期后开始输出的串行码为100100,说明了仿真的正确性。4.2.3 编码电路设计与仿真完整的电路模块采用自顶向下的设计方法,在顶层模块中调用各个子模块完成系统控制功能。具体顶层设计电路如下:图4-12 编码完整电路设置好相应的输入和输出后并串装换模块的仿真波形如下:图4-13 编

24、码电路仿真波形图clk为系统时钟输入,clk5为5分频器分频后的输出,clk6为6分频器分频后的输出,F为模式选择位, shift_in为串行的5B码组输入,shift_out为串行的6B码组输出。A、B分别为并行的5B、6B码组。任选一个码组01100作为串行码组输入,当F为1时,可以看到在一个clk6周期开始串行输出的6B码组为101100,通过码表对比可以知道,设计与仿真都是正确的,故整个系统完全实现了所需的功能。4.3 译码电路设计4.3.1 译码原理图4-14 译码部分系统框图5B6B译码是编码过程的逆过程,也就是把6B码流按照算法规则译成5B码流。译码的输入是6B码流,译码时,把送

25、来的已变换的6B信号码流,每6比特并联为一组,作为PROM的地址,然后读出5B码,再经过并-串变换还原为原来的信号码流。在5B6B码中,5位字符共有32种不同的组合码字。而6位字符共有64种不同组合的码字。4.3.2 各模块的设计及仿真(1)时钟控制模块(分频模块)该模块主要是实现一个时钟分频的功能。本设计需要用到一个五分频和一个六分频,通过Quartus II封装后的图形以及仿真波形与编码模块的分频模块完全相同,不同的是五分频模块为五位并串转换模块提供时钟,而六分频为六位串并转换模块提供时钟。(2)六位串并转换模块该模块主要实现串行数据输入转换为并行数据输出,输入的为6位的串行数据,输出的为

26、6位并行的数据,通过Quartus II封装后的图形如下图:图4-15 6位串并转换模块设置好相应的输入和输出后并串装换模块的仿真波形如下:图4-16 6位串并转换模块的仿真图中图中clk为系统时钟输入,clk6为六分频后的时钟输入,shift_in为串行的6B码组输入,A为并行的6B码组输出。任选一个码组100110,从仿真结果中可以看出,在第六个时钟周期结束后并行输出的码组为100110,验证了仿真的正确性。(3)译码部分该模块主要实现6B数据转换为5B数据的一个功能,其实质的事一个PROM,通过程序把5B6B码表存储起来,然后如果输入一个6B的数据,通过查表后输出一个对应的5B数据,从而

27、实现6B转5B的功能,通过Quartus II封装后的图形如下图:图4-17 译码模块设置好相应的输入和输出后并串装换模块的仿真波形如下:图4-18 译码模块仿真图中clk5为系统时钟输入; Y位并行的5B码组输入,Q为并行的6B码输出。通过Y和Q的码组可以发现,当输入011010时输出11010,只不过延迟了半个时钟周期。与5B6B编码表中进行对比可以证明仿真结果是正确的。(4)五位并串转换电路该模块主要实现并行数据输入转换为串行数据输出,输入的为5位并行的数据,输出的为5位串行数据,通过Quartus II封装后的图形如下图:图4-19 5位并串转换模块 图4-20 5位并串转换模块仿真图

28、中clk0表示系统时钟5分频后的时钟输入,clk1为系统时钟输入,Q为并行的5B码组输入,shift_out为串行的5B码组输出。选用任意一个码组01101测试,shift_out第五个周期后开始输出的串行码为01101,说明了仿真的正确性。4.2.3 译码电路设计与仿真图4-21 译码完整电路图4-22 译码电路仿真波形图clk为系统时钟输入,clk5为5分频器分频后的输出,clk6为6分频器分频后的输出, shift_in为串行的6B码组输入,shift_out为串行的5B码组输出。任选一个码组100110作为串行码组输入,可以看到在一个clk5周期后串行输出的6B码组为00110,通过码

29、表对比可以知道,设计与仿真都是正确的,故整个系统完全实现了所需的功能。总 结本次通信综合训练通过对5B6B线路码的编译码工作原理进行分析,设计出相应的电路,实现5B6B线路码的编码与译码功能。我的设计是通过Quartus II软件实现的,通过对设计所需系统的原理分析,将整个系统模块化。然后写出完成各部分功能对应的VHDL程序,再将这些程序封装到一个模块中,像编码部分的分频模块、串并转换模块、编码模块、并串转换模块等。最后调用这些子模块组成完整的电路,实现设计所需的编码译码功能。在整个设计过程中,每个模块都要进行仿真验证,确保电路设计功能的正确性。在本次通信综合训练中遇到不少功能实现的问题,尤其

30、是对实现编译码功能模块的VHDL语言的硬件电路实现的描述。从中深入体会到VerilogHDL语言软件语法的灵活性和Quartus II强大的功能仿真能力。在这次综合训练过程中,屡屡碰见一些问题,在解决这些问题的过程中,不断加强了我对光纤通信系统以及线路码型的理解。对于一些自己不清楚,不明白但平时又很难发现的知识点有了一次全面的巩固与复习。本次通信训练让我深深的感觉到理论与实践相结合的重要性,为以后走向工作岗位从事通信设计提供了锻炼的机会,打下了坚实的理论基础和丰富了设计思想。在三周的通信综合训练过程中,指导老师时时在我们身旁帮助我们, 教会了我很多东西,谢谢我们的指导老师对我们的帮助,同时也感

31、谢同组同学的协作配合。参考文献1 光纤通信系统,邱昆,电子科技大学出版社2 光纤通信, 刘增基;西安电子科技大学出版社3 陈耀和.VHDL语言设计技术M.北京:电子工业出版社,2004. 4 阎石.数字电子技术第四版M.高等教育出版社,1998.5 谢琳.一种典型的4B5B编解码电路,光通信技术J.光通信技术,1997 (2 ):130-135.6孙娇燕.5B6B码编解码方案的分析与改进J.光通信技术,1994,4:282-286.75B6B编解码的VHDL仿真实现 杨云 邓元庆8VHDL硬件描述语言 辛春燕 国防工业出版社9 杨祥林. 光纤通信系统M. 北京:国防工业出版社,2000.1.1

32、0 孟庆海,张洲. VHDL基础及经典实例开发M. 西安交通大学出版社,2008.4.附录:编译码各模块的程序Ø 五分频模块程序library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt5 is port(clk:in std_logic; clk5:out std_logic);end;architecture exam of CNT5 is signal q:integer range 0 to 4; signal temp: std_logic;begin proc

33、ess(clk) begin if clk'event and clk='1' then if q=4 then q<=0; temp<='1' else q<=q+1;temp<='0' end if; end if; end process; clk5<=temp; end exam;Ø 六分频模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity CNT6 isport (clk:

34、 in std_logic;clk6:out std_logic);end;architecture exam of CNT6 is signal q:std_logic_vector(2 downto 0); signal temp:std_logic;begin process(clk) beginif clk'event and clk='1'thenif q="101" then q<="000"temp<='1'else q<=q+1;temp<='0'end if

35、;end if;end process;clk6<=temp;end exam;Ø 五位串并转换模块程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity SER2PAR5to5 is port ( clk: in std_logic; clk5: in std_logic; shift_in:in std_logic; A:out std_logic_vector(4 downto 0);end;architecture one of SER2PAR5to5 is si

36、gnal q:std_logic_vector(4 downto 0);beginp1:process(clk)beginif clk'event and clk='1'then q<=q(3 downto 0)&shift_in;end if;end process p1;p2:process(clk5)beginif clk5'event and clk5='1'then A<=q;end if;end process p2;end one;Ø 编码模块程序library ieee;use ieee.std_lo

37、gic_1164.all;use ieee.std_logic_arith.all;entity prom5_6 isport ( Y: in std_logic_vector(4 downto 0); clk,F:in std_logic;Q: out std_logic_vector(5 downto 0);END;architecture one of prom5_6 issignal reg:std_logic_vector(5 downto 0);beginp1:process(Y,F)beginif F='0'then case Y is when "00

38、000"=>REG<="110010" when "00001"=>REG<="110011" when "00010"=>REG<="110110" when "00011"=>REG<="100011" when "00100"=>REG<="110101" when "00101"=>REG<="10

39、0101" when "00110"=>REG<="100110" when "00111"=>REG<="100111" when "01000"=>REG<="101011" when "01001"=>REG<="101001" when "01010"=>REG<="101010" when "01011&qu

40、ot;=>REG<="001011" when "01100"=>REG<="101100" when "01101"=>REG<="101101" when "01110"=>REG<="101110" when "01111"=>REG<="001110" when "10000"=>REG<="110001&q

41、uot; when "10001"=>REG<="111001" when "10010"=>REG<="111010" when "10011"=>REG<="010011" when "10100"=>REG<="110100" when "10101"=>REG<="010101" when "10110"=&g

42、t;REG<="010110" when "10111"=>REG<="010111" when "11000"=>REG<="111000" when "11001"=>REG<="011001" when "11010"=>REG<="011010" when "11011"=>REG<="011011" w

43、hen "11100"=>REG<="011100" when "11101"=>REG<="011101" when "11110"=>REG<="011110" when "11111"=>REG<="001101" WHEN OTHERS=>REG<=NULL; end case; end if; if F='1' then case Y is when

44、"00000"=>REG<="110010" when "00001"=>REG<="100001" when "00010"=>REG<="100010" when "00011"=>REG<="100011" when "00100"=>REG<="100100" when "00101"=>REG<=

45、"100101" when "00110"=>REG<="100110" when "00111"=>REG<="000111" when "01000"=>REG<="101000" when "01001"=>REG<="101001" when "01010"=>REG<="101010" when "

46、01011"=>REG<="001011" when "01100"=>REG<="101100" when "01101"=>REG<="000101" when "01110"=>REG<="000110" when "01111"=>REG<="001110" when "10000"=>REG<="

47、110001" when "10001"=>REG<="010001" when "10010"=>REG<="010010" when "10011"=>REG<="010011" when "10100"=>REG<="110100" when "10101"=>REG<="010101" when "10110&

48、quot;=>REG<="010110" when "10111"=>REG<="010100" when "11000"=>REG<="011000" when "11001"=>REG<="011001" when "11010"=>REG<="011010" when "11011"=>REG<="001010

49、" when "11100"=>REG<="011100" when "11101"=>REG<="001001" when "11110"=>REG<="001100" when "11111"=>REG<="001101" WHEN OTHERS=>REG<=NULL; end case; end if;end process p1;p2:process(clk)

50、beginif clk'event and clk='1'thenQ<=reg;end if;end process p2;end one;Ø 六位并串转换模块library ieee; use ieee.std_logic_1164.all; entity PAR2SER6to6 is port ( clk0,clk1: in std_logic; Q:in std_logic_vector(5 downto 0); shift_out : out std_logic); end PAR2SER6to6; architecture one of PAR

51、2SER6to6 is signal N:INTEGER RANGE 0 TO 5; signal REG:std_logic_vector(5 downto 0); begin p1:process(clk0,Q) begin if clk0'event and clk0='1' then REG<=Q; end if; end process p1; PROCESS(CLK1,REG,N) begin if clk1'event and clk1='1'then if n=5 then n<=0; else N<=n+1;

52、end if; end if; case N is when 0=>shift_out<=REG(5); when 1=>shift_out<=REG(4); when 2=>shift_out<=REG(3); when 3=>shift_out<=REG(2); when 4=>shift_out<=REG(1); when 5=>shift_out<=REG(0); when others=>shift_out<='X' end case; end process; end one;

53、16; 六位串并转换模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity SER2PAR6to6 is port ( clk: in std_logic; clk6: in std_logic; shift_in:in std_logic; A:out std_logic_vector(5 downto 0);end;architecture one of SER2PAR6to6 is signal q:std_logic_vector(5 downto 0);beginp1:proc

54、ess(clk)beginif clk'event and clk='1'then q<=q(4 downto 0)&shift_in;end if;end process p1;p2:process(clk6)beginif clk6'event and clk6='1'then A<=q;end if;end process p2;end one;Ø 译码模块程序library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; e

55、ntity PROM6_5 is port ( clk5: in std_logic; Q: in std_logic_vector(5 downto 0); Y : out std_logic_vector(4 downto 0) ); end PROM6_5;architecture one of PROM6_5 issignal REG: std_logic_vector(4 downto 0);begin process(CLK5,Q) begin if clk5'event and clk5='1' then case Q is when "1100

56、10"=>REG<="00000" when "100001"=>REG<="00001" when "100010"=>REG<="00010" when "100011"=>REG<="00011" when "100100"=>REG<="00100" when "100101"=>REG<="001

57、01" when "100110"=>REG<="00110" when "000111"=>REG<="00111" when "101000"=>REG<="01000" when "101001"=>REG<="01001" when "101010"=>REG<="01010" when "001011"=>RE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论