爱玩科技网
您的当前位置:首页八位巴克码发生器EDA设计报告

八位巴克码发生器EDA设计报告

来源:爱玩科技网
武汉理工大学《EDA课程设计》说明书

摘要........................................................................................................................11.绪论.....................................................................................................................32.设计内容及要求.................................................................................................4

2.1设计的目的及主要任务..........................................................................4

2.1.2设计目的.......................................................................................42.1.2设计任务.......................................................................................42.2设计思想..................................................................................................43.设计原理...........................................................................................................5

3.1设计原理框图..........................................................................................53.2单元模块设计..........................................................................................5

3.2.1分频模块.......................................................................................53.2.2巴克码序列产生模块...................................................................73.2.3动态扫描显示控制模块...............................................................83.2.4译码显示驱动模块.......................................................................93.3顶层电路的设计......................................................................................94.电路的仿真及分析.........................................................................................10

4.1分频器仿真............................................................................................104.2巴克码产生模块仿真............................................................................104.3八进制计数器仿真................................................................................114.4位选模块仿真........................................................................................114.5译码显示模块仿真................................................................................124.6顶层电路仿真........................................................................................135硬件调试...........................................................................................................136.心得体会...........................................................................................................15参考文献..............................................................................................................16附录......................................................................................................................17

1

武汉理工大学《EDA课程设计》说明书

本文介绍了一种采用单片CPLD芯片进行巴克码发生器的设计方法,主要阐述如何使用新兴的EDA器件取代传统的电子设计方法,利用CPLD的可编程性,简洁而又多变的设计方法,缩短了研发周期。本设计实现了巴克码发生器的一些基本功能,主要包括八位巴克码序列产生,以及数码显示功能。本次设计主要包括采用了CPLD芯片,使用VHDL语言进行编程,使其具有了更强的移植性,更加利于产品升级。

关键词:VHDL;巴克码;QuartusⅡ;CPLD

1

武汉理工大学《EDA课程设计》说明书

ThispaperpresentsamonolithicCPLDchipBarkercodegeneratordesignmethodfocusesprimarilyonhowtousetheemergingEDAelectronicdesigndevicetoreplacethetraditionalmethods,theuseofprogrammableCPLD,conciseyetvarieddesignapproach,shortenthedevelopmentcycle.TheBarkercodegeneratordesignedandimplementedsomeofthebasicfeaturesincludeeightBarkercodesequencegeneration,anddigitaldisplay.ThedesignmainlyincludetheuseofaCPLDchip,usingtheVHDLprogramminglanguage,tomakeitamoreportability,moreconducivetoproductupgrades.

Keywords:VHDL;Barkercode;QuartusⅡ;CPLD

2

武汉理工大学《EDA课程设计》说明书

绪论

人类社会已经进入信息化时代,信息社会的发展离不开电子产品的进步。现代电子产品在性能提高、复杂度降低的同时,价格却一直呈下降趋势,而且产品更新换代的步伐也越来越快,实现这种进步的主要原因就是生产制造技术和电子设计技术的发展。前者以微细加工技术为代表,目前已进展到深亚微米阶段,可以在几平方厘米的芯片上集成数万个晶体管;后者的核心就是EDA技术。没有EDA技术的支持,想要完成超大规模集成电路的设计制造是不可想象的,反过来,生产制造技术的不断进步又必须对EDA技术提出新要求。EDA代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(VHDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件。

可编程逻辑器件自20世纪70年代以来,经历了PAL、GAL、CPLD、FPGA几个发展阶段,其中CPLD、FPGA属高密度可编程逻辑器件,目前集成度以高达200万门/片,它将掩膜ASIC集成度高的优点和可编程逻辑器件设计生产方便的特点结合在一起,特别适合于样品研制和小批量产品开发,使产品能以最快的速度上市,而当市场扩大时,它可以和容易地转由ASIC实现,因此开发风险也大为降低。CPLD/FPGA器件已成为现代高层次电子设计方法的实现载体。

VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为3种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用VHDL来完成。另外,VHDL还有以下优点:VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心转移到了系统功能的实现和调试上,只需要花较少的精力用于物理实现;VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用;VHDL的设计不依赖于特定的器件,方便了工艺的转换。VHDL是一个标准语言,为众多的EDA场上支持,因此移植性好。

3

武汉理工大学《EDA课程设计》说明书

设计内容及要求

2.1设计的目的及主要任务

2.1.2设计目的

①学会在QuartusⅡ环境中运用VHDL语言设计方法构建具有一定逻辑功能的模块,并能运用图形设计方法完成顶层原理图的设计。

②掌握巴克码发生器的主要功能与在CPLD中的实现方法。

2.1.2设计任务

①设计一个巴克码发生器,能产生八位巴克码(01110010)并显示码数。其输出波形满足下图2.1.2.

图2.1.2巴克码输出序列波形

②运用QuartusⅡ软件中的仿真功能对所设计的巴克码发生器的各个模块及顶层电路的功能进行仿真分析。

③将所设计的整个系统写入CPLD器件中,加上需要的外围电路在实验箱上实现整个系统的硬件搭建。

2.2设计思想

本次设计首先在QuartusⅡ环境中对巴克码发生器的各个部分利用VHDL这一硬件描述语言予以设计,生成模块。而整个设计的核心部分就在序列产生与码数显示模块,产生模块完成的功能是八位巴克码序列(01110010)随时钟脉冲逐一产生,显示模块完成的功能是将八位序列码及其变化过程在七段数码管上显示出来。随后运用QuartusⅡ中的仿真功能对其予以仿真,从仿真的结果中分析程序的正确性。待所有模块的功能正确之后,运用原理图搭建顶层电路并进行整体仿真直至达到最初的设计要求,最后再在实验箱上检验设计的正确与否。

4

武汉理工大学《EDA课程设计》说明书

设计原理

3.1设计原理框图

根据层次化设计理论,巴克码发生器设计可由产生及显示先后分为分频模块、序列产生模块、动态扫描显示控制模块、译码显示驱动模块,其系统框图如图3.1所示。

分频模块译码显示驱动模块序列产生时钟脉冲脉冲巴克码产生模块控制模块时钟脉冲数码显示控制模块八位码数据选则模块动态扫描显示控制模块图3.1巴克码产生器原理框图

巴克码主要用于帧同步,帧同步的概念比较简单,但又十分重要,在一般的移动通信系统中采用集中插入同步法,集中插入方式的帧同步码,要求在接收端进行同步识别时出现伪同步的可能性尽量小,并要求此码组具有尖锐的自相关函数,以便识别。另外,识别器也要尽量简单,目前用得最广泛的是性能良好的“巴克码”(Barker)。巴克码是一种具有特殊规律的二进制码组。它是一个非周期序列,一个n位的巴克码{X1,X2,X3,···Xn},每个码元只可能取值+1或-1。

3.2单元模块设计

3.2.1分频模块

分频模块将实验箱提供的20MHz的时钟脉冲分为1Hz的序列产生时钟脉冲和1000Hz的控制模块时钟脉冲。实际巴克码产生频率是远大于1Hz的,设计中为了便于观察序列输出时的变化所以将产生频率设为1Hz。控制模块时钟用于控

5

武汉理工大学《EDA课程设计》说明书

制显示模块对序列码的位选数据输出和八位七段数码管的位选显示,因此当控制时钟设为1000Hz时每位数码管显示扫描频率为125Hz显示效果较好。

通过VHDL语言的顺序语句IF-THEN-ELSE来实现对输入脉冲的分频功能,1Hz分频器VHDL源程序如下。1000Hz分频器源程序见附录。

libraryieee;

useieee.std_logic_11.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityfpqisport(clk:instd_logic;

co:outstd_logic);endentity;

architecturebhvoffpqissignals:std_logic;beginprocess(clk)

variableQB:integerrange1to10000000;begin

ifrising_edge(clk)thenif

QB=10000000THENQB:=1;s<=nots;:QB计数到10M输出信号翻转

:QB没到10M继续随脉冲累加:QB为计数变量:输入时钟脉冲端口:1Hz脉冲输出端口

elseQB:=QB+1;endif;endif;endprocess;co<=s;endbhv;

:翻转信号给输出端口成1Hz脉冲

1000Hz分频器与上述1Hz分频器源程序一致,只需将计数量QB的范围变为1to10000将判断条件改为ifQB=10000即可。生成的分频器元件如图3.2.1所示。

图3.2.1分频器元件图

6

武汉理工大学《EDA课程设计》说明书

巴克码序列产生模块

序列的产生由复位控制端reset实现,当reset为低电平时使八位序列码为01110010,当reset为高电平时序列随序列发生时钟脉冲逐一输出。考虑到序列的排列是固定的可用移位的原理将序列按原顺序重复逐一输出。此程序主要用到位运算符号&,其VHDL源程序如下。

libraryieee;

useieee.std_logic_11.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityxulieis

port(clk,reset:instd_logic;

q:outstd_logic;

:时钟脉冲和复位端口:巴克码产生端口

dout:outstd_logic_vector(7downto0));:显示数据输出端口

endentity;

architecturebhvofxulieis

signals:std_logic_vector(7downto0);begin

process(clk,reset)begin

ifreset='0'thens<=\"01110010\";

elsifreset='0'and(clk'eventandclk='1')thens<=s(6downto0)&s(7);endif;endprocess;q<=s(7);dout<=s;endbhv;

:最高位数据作为巴克码输出:s作为显示数据编码输出

:序列码随时钟左移:reset为低电平时置数:s为八位二进制编码

7

武汉理工大学《EDA课程设计》说明书

一个作为巴克码发生端口只输出高低变化的方波脉冲即码元输出;一个作为提供显示模块数据的编码输出端口。生成的原件如图3.2.2所示。

图3.2.2序列产生模块

3.2.3动态扫描显示控制模块

八位巴克码的显示需要八个位上的数据分别在八位数码管上显示那么需要八种状态的改变,则显示控制模块主要由八进制计数器模块和位选模块构成。其中计数器提供了八种状态的改变,位选模块决定了在哪种状态输出哪一位数据。位选需要序列数据的输入、状态控制输入和选中位数据输出三个端口,而序列数据是每一位的数据时变化的所以选中位的数据只能由语句dout<=din(x)实现x为对应的位数。

八进制计数器VHDL源程序较简单在此不做解释见附录。

位选控制模块主要用到with—select语句实现不同状态下输出不同位的数据功能,其VHDL源程序如下。

libraryieee;

useieee.std_logic_11.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityweixuanis

port(cin:instd_logic_vector(2downto0);:状态控制输入端口

din:instd_logic_vector(7downto0);dout:outstd_logic);

endentity;

architecturebhvofweixuanisbeginwithcinselect

8

:序列数据输入端口:位数据输出端口

:cin为状态控制量

武汉理工大学《EDA课程设计》说明书

when\"000\din(1)when\"001\din(2)when\"010\din(3)when\"011\din(4)when\"100\din(5)when\"101\din(6)when\"110\din(7)when\"111\";

endbhv;

:0态输出第0位:1态输出第1位:2态输出第2位:3态输出第3位:4态输出第4位:5态输出第5位:6态输出第6位:7态输出第7位

八进制计数器模块原件如图3.2.3(a)所示,位选模块如图3.2.3(b)所示。

图3.2.3(a)八进制计数器图3.2.3(b)位选模块

3.2.4译码显示驱动模块

此部分为典型的译码器,主要将前面显示控制输出的位选数据转化为七段数码管的显示编码,而巴克码每一位都只有0和1两种情况,所以只需用器端数码管的0和1的显示编码分别为0111111和0000110。其源程序和前面的位选一样主要由with—select语句构成,在此不做复述见附录。译码显示模块原件如图3.2.4所示。

图3.2.4译码显示模块

3.3顶层电路的设计

根据原理框图和各模块原件图利用QuartusⅡ电路图仿真功能可直接将由VHDL语言设计生成的模块连接成顶层电路如图3.3所示。

9

武汉理工大学《EDA课程设计》说明书

3.3顶层电路

4.电路的仿真及分析

4.1分频器仿真

1Hz的分频器在仿真过程中计算量较大波形效果不明显在此一20分频为例做出仿真波形如图4.1所示。

图4.1分频器仿真波形

由仿真结果可看到经过10个输入脉冲输出就翻转即达到20分频的目的。

4.2巴克码产生模块仿真

巴克码发生及复位波形如图4.2所示。

10

武汉理工大学《EDA课程设计》说明书

4.2巴克码发生模块波形

由仿真波形可看出当复位端reset为低电平时序列始终为01110010,当reset变为高电平时序列码元输出端q依次输出编码0、1、1、1、0、0、1、0如此反复,而序列编码输出端dout的输出序列随时钟脉冲左移,可见功能实现正常。

4.3八进制计数器仿真

计数器实现较简单,波形如图4.3所示。

图4.3八进制计数器仿真波形

4.4位选模块仿真

位选模块仿真波形如图4.4所示。

11

武汉理工大学《EDA课程设计》说明书

4.4位选模块仿真波形

由波形可看出当输入序列数据位01110010,位选状态控制由000到111变化时,输出端dout输出的正是状态量对应序列位的波形,此模块满足功能。

4.5译码显示模块仿真

译码模块仿真波形如图4.5所示。

图4.5译码显示仿真波形

由输入端din为低电平(0)七段编码输出为0111111,din为高电平(1)编码输出为0000110,达到设计要求。

12

武汉理工大学《EDA课程设计》说明书

顶层电路仿真

由于本次设计要求要达到序列的发生和序列的显示两个功能,序列的发生功能仿真已经可以由巴克码发生模块实现,而显示功能仿真只能得到七段编码因此整体电路的仿真不能直观实现。但可由各模块功能的正确性和电路结构的完整性分析整体电路可以实现设计要求,只是需要硬件实现来证实。顶层电路仿真波形如图4.6所示。

图4.6顶层电路仿真波形

5硬件调试

顶层电路分析结果显示无错误,然后定义管脚如图5所示。

定义好管脚后将编译后的程序下载到试验箱中。将拨码开关49拨到0时码元输出端q所接的111脚LED灯为灭,八位数码管显示的是数码01110010;将开关49拨到1时数码管显示的序列开始向左移动最高位补到最低位,而LED灯的亮灭与数码管显示的最高位数字变化一样。最高位为0时LED灭,最高位为1时LED亮。观察得到在复位键置高电平后接下来的8秒内数码管显示的八位码和LED的亮灭情况如下表。

观察显示情况表

时间显示LED

1s亮

2s亮

3s亮

4s灭

13

5s灭

6s亮

7s灭

8s灭

1110010011001001100100110010011101001110100111000011100101110010

武汉理工大学《EDA课程设计》说明书

0秒时即复位电平为低序列无变化最高位为0、LED为灭,根据上表可知随着时钟脉

冲LED所接端口电平变化规律为0、1、1、1、0、0、1、0、0……0为低,1为高。那么111脚每隔8秒输出一组巴克码,产生功能验证成功。显示功能可直接观察到序列的变化情况,功能也正常。

图5管脚图

14

武汉理工大学《EDA课程设计》说明书

心得体会

本次课程设计至此已经接近尾声,两周的时间虽然很短暂,但在这两个星期的设计过程中收获颇丰。设计的核心内容就是QuartusⅡ环境中,利用VHDL语言设计出基于CPLD的巴克码发生器。整个设计过程中首先对数字电路这门课程有了更深的了解,因为课程设计本身要求将以前所学的理论知识运用到实际的电路设计当中去,在电路的设计过程中,无形中便加深了对数字电路的了解及运用能力,对课本以及以前学过的知识有了一个更好的总结与理解;以前的数字实验只是针对某一个小的功能设计,而此次得EDA课程设计对我们的总体电路的设计的要求更严格,需要通过翻阅复习以前学过的知识确立了实验总体设计方案,然后逐步细化进行各模块的设计;其次,在电路仿真的过程中总会出现一些问题,需要我们细心解决,所以这两周下来,我对电路故障的排查能力有了很大的提高;再次,通过此次课程设计,我对设计所用到的软件有了更加深刻地了解,这对我们以后的工作和学习的帮助都很有用处。

感谢学校给我们这次机会,锻炼了我们的动手能力。通过这次课设让我明白了理论和实际操作之间差距,而且也让我很明确得意识到自己在数电上有很多的知识漏洞,以后应该多钻研一下。同时也感谢指导老师在设计过程中的辅导以及同学的帮助。

15

武汉理工大学《EDA课程设计》说明书

[1]潘松,黄继业.EDA技术与VHDL.北京:清华大学出版社,2007.1.[2]宋嘉玉,孙丽霞.EDA实用技术.北京:人民邮电出版社,2006.12.[3]齐洪喜,陆颖.VHDL电路设计实用技术.北京:清华大学出版社,2004.5.[4]刘艳萍,高振斌,李志军.EDA实用技术及应用.北京:国防工业出版社,2006.1.[5]章彬宏.EDA应用技术.北京:北京理工大学出版社,2007.7.[6]汉泽西.EDA技术及其应用.北京:北京航空航天大学出版社,2004.5.[7]谭会生.EDA技术基础.长沙:湖南大学出版社,2004.8

16

武汉理工大学《EDA课程设计》说明书

1000Hz分频器源程序libraryieee;

useieee.std_logic_11.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityfpqis

port(clk:instd_logic;

co:outstd_logic);

endentity;

architecturebhvoffpqissignals:std_logic;begin

process(clk)

variableQB:integerrange1to10000;begin

ifrising_edge(clk)thenif

QB=10000TthenQB:=1;s<=nots;

elseQB:=QB+1;endif;endif;endprocess;co<=s;endbhv;

八进制计数器源程序libraryieee;

useieee.std_logic_11.all;useieee.std_logic_unsigned.all;

17

:输出1000Hz脉冲

武汉理工大学《EDA课程设计》说明书

ieee.std_logic_arith.all;entitycount8isport(clk:instd_logic;

count8:outstd_logic_vector(2downto0));endcount8;

architecturebhvofcount8is

signals:std_logic_vector(2downto0);beginprocess(clk)begin

if(clk'eventandclk='1')thenifs=7thens<=\"000\";elses<=s+1;endif;endif;endprocess;count8<=s;endbhv;

:计数到7置零

译码显示模块源程序libraryieee;

useieee.std_logic_11.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityxianshiisport(din:instd_logic;

segout:outstd_logic_vector(6downto0));endxianshi;

18

武汉理工大学《EDA课程设计》说明书

bhvofxianshiis

beginwithdinselect

segout<=\"0111111\"when'0',

\"0000110\"when'1';

endbhv;

:输入为0输出0111111:输入为1输出0000110

19

因篇幅问题不能全部显示,请点此查看更多更全内容