《基于vhdl的异步串行通信电路设计dkck.docx》由会员分享,可在线阅读,更多相关《基于vhdl的异步串行通信电路设计dkck.docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于VHHDL的的异步串串行通信信电路设设计1 引 言 随着电子子技术的的发展,现现场可编编程门阵阵列 FFPGAA和复杂杂可编程程逻辑器器件CPPLD的的出现,使使得电子子系统的的设计者者利用与与器件相相应的电电子CAAD软件件,在实实验室里里就可以以设计自自己的专专用集成成电路AASICC器 件件。这种种可编程程ASIIC不仅仅使设计计的产品品达到小小型化、集集成化和和高可靠靠性,而而且器件件具有用用户可编编程特性性,大大大缩短了了设计周周期,减减少了设设计费用用,降低低了设计计风 险险。目前前数字系系统的设设计可以以直接面面向用户户需求,根根据系统统的行为为和功能能要求,自自上至下下地逐
2、层层完成相相应的描描述综综合优优化仿仿真与验验证,直直到生成成器件,实实现电 子设计计自动化化。其中中电子设设计自动动化(EEDA)的的关键技技术之一一就是可可以用硬硬件描述述语言(HHDL)来来描述硬硬件电路路。 VVHDLL是用来来描述从从抽象到到具体级级别硬件件的工业业标准语语言,它它是由美美国国防防部在880年代代开发的的HDLL,现在在已成为为IEEEE承认认的标准准硬件描描述语言言。VHHDL 支持硬硬件的设设计、验验证、综综合和测测试,以以及硬件件设计数数据的交交换、维维护、修修改和硬硬件的实实现,具具有描述述能力强强、生命命周期长长、支持持大规模模设计的的分解和和已有设设计的再
3、再 利用用等优点点。利用用VHDDL这些些优点和和先进的的EDAA工具,根根据具体体的实际际要求,我我们可以以自己来来设计串串口异步步通信电电路。 广告插播播信息维维库最新新热卖芯芯片: EL115011CMEEL74457CCULTT16440ALLCS88LTCC14339CGGMAXX2411EEAAIADD92003ARRUZQQMV772DPP5IRRF74459MMAX7706CCPAPPBL337700A2串口异异步通信信的帧格格式和波波特率 2.1 串行异异步通信信的帧格格式 在在串行异异步通信信中,数数据位是是以字符符为传送送单位,数数据位的的前、后后要有起起始位、停停止位,
4、另另外可以以在停止止位的前前面加上上一个比比特位(bitt)的校校验位。其其 帧格格式如图图1所示示。 起始位是是一个逻逻辑0,总总是加在在每一帧帧的开始始,为的的是提醒醒数据接接收设备备接收数数据,在在接收数数据位过过程中又又被分离离出去。数数据位根根据串行行通信协协议, 允许传传输的字字符长度度可以为为5、66、7或或8位。通通常数据据位为77位或88位,如如果要传传输非AASCIII数据据(假如如使用扩扩展字符符设置的的文本或或者二进进制数据据),数数据位 格式就就需要采采用8位位。数据据位被传传输时从从一个字字符的最最低位数数据开始始,最高高位数据据在最后后。例如如字母CC在ASSCI
5、II表中是是十进制制67,二二进制的的 01100000111,那么么传输的的将是11100000110。校校验位是是为了验验证传输输的数据据是否被被正确接接收,常常见的校校验方法法是奇、偶偶校验。另另外校验验位也可可以为00校验 或者11校验,即即不管数数据位中中1的个个数是多多少,校校验位始始终为00或者11,如果果在传输输的过程程中校验验位发生生了变化化,这就就提示出出现了某某类错误误。不过过,在传传输数据据的时 候,也也可以不不用校验验位。停停止位,为为逻辑11,总在在每一帧帧的末尾尾,可以以是1位位、1.5位或或者2位位。最常常用的是是1位,超超过1位位的停止止位通常常出现在在这样的
6、的场合:在 处处理下一一个即将将发送来来的字符符之前接接收设备备要求附附加时间间。 2.2 串行异异步通信信的波特特率 串串行口每每秒发送送或接收收数据的的位数为为波特率率。若发发送或接接收一位位数据需需要时间间为t,则则波特率率为1/ t,相应的的发送或或接收时时钟为11/t Hz。发发送和接接收设备备的波特特率应该该设置成成一致,如如果两者者的波特特率不一一致,将将会出现现校验错错或者帧帧错。 3 串行行发送电电路的设设计 为简化电电路设计计的复杂杂性,采采用的帧帧格式为为: 11位开始始位+88位数据据位+11位停止止位,没没有校验验位,波波特率为为96000。 3.1 波特率率发生器器
7、的设计计 要产产生96600波波特率,要要有一个个不低于于96000 HHz的时时钟才可可以。为为产生高高精度的的时钟,我我选了66MHzz(6MM能整除除96000)的的晶振来来提供外外部时钟钟。当然然,你也也可以选选其它频频率的时时钟来产产生96600 Hz的的时钟。对对于6MMHz时时钟,需需要设计计一个6625进进制的分分频器来来产生996000波特率率的时钟钟信号。用用VHDDL设计计分频器器较简单单,在这这里就不不再给出出源程序序 了。 3.2 发送电电路的设设计 根根据采用用的帧格格式,需需要发送送的数据据为100位(11位开始始位、88位数据据位、11位停止止位),在在发送完完
8、这100位后,就就应该停停止发送送,并使使发送端端电平处处于逻 辑1,然然后等候候下次的的发送。下下面是实实现上述述功能的的VHDDL源程程序: librraryy ieeee; use ieeee.sstd_loggic_11664.aall; entiity Comm iss portt(cllk,een:iin sstd_loggic; Sendd_daata:in stdd_loogicc_veectoor(99 doowntto 00); seriial:outt sttd_llogiic); end comm; archhiteectuure comm_arrc oof ccom
9、is begiin proccesss(cllk) variiablle ccounnt:iinteegerr raangee 0 to 9 :=0; begiin if een=0 theen counnt:=0; seriial=11; elsiif rrisiing_edgge(cclk) thhen if ccounnt=99 thhen seriial=Seend_datta(99); elsee seriial=Seend_datta(ccounnt); counnt:=couunt+1; end if; end if; end proocesss; end comm_arrc;
10、其中,SSendd_daata(0 tto 99)表示示需要发发送的数数据帧,发发送时,开开始位SSendd_daata(0)必必须为逻逻辑0,停停止位SSendd_daata(9)必必须为逻逻辑1,否否者与硬硬件电路路连接的的设 备备接收到到的数据据会出现现错误。在在发送每每一帧之之前,首首先给输输入端een一个个低电平平脉冲,让让电路复复位(ccounnt置00),然然后开始始发送。变变量coountt 在进进程中用用来记录录发送的的数据数数目,当当数据帧帧发送完完后,发发送端就就一直发发送停止止位(逻逻辑1)。 3.3 时序仿仿真 选选EDAA工具,对对VHDDL源程程序编译译。用的的是
11、 AAlteera公公司的MMAX+pluus III 99.3 Basseliine,这这个工具具支持VVHDLL的编译译、仿真真。图22是编译译后的仿仿真结果果,其中中,Cllk为频频率96600HHz的时时钟,SSendd_daata00为开始始 位,SSendd_daata8.0为为数据位位, SSendd_daata99为停止止位。结结果显示示,输出出完全是是按数据据帧格式式发送的的。4 串行行接收电电路的设设计 接收电路路比发送送电路要要复杂,接接收电路路要时实实检测起起始位的的到来,一一旦检测测到起始始位到,就就要将这这一帧数数据接收收下来。为为提高接接收的准准确性,减减少误码码
12、率,每每 一位位数据都都用3倍倍频的波波特率对对数据进进行采样样(如图图3所示示),然然后对33次采样样结果进进行判决决:如果果3次采采样中至至少有22次为高高电平,则则接收这这一位数数据被判判决为高高 电平平,否者者,为低低电平。4.1 波特率率发生器器和采样样时钟的的设计 为完成成3次采采样,除除了频率率为96600HHz的接接收时钟钟外,还还要有一一个3倍倍频的采采样时钟钟。下面面是实现现上述功功能的VVHDLL源程序序: librraryy ieeee; usse iieeee.sttd_llogiic_111644.alll; entiity couunt6625 is portt(
13、cllk,een:iin sstd_loggic; Cllockk1,CClocck3:outt sttd_llogiic); end couunt6625; archhiteectuure couunt6625_arcc off coountt6255 iss begiin proccesss(cllk,een) variiablle ccounnt:iinteegerr raangee 0 to 6255 :=0; begiin if een=0 theen NUlll; elsiif (rissingg_eddge(clkk) theen counnt:=couunt+1; if cco
14、unnt=6625 theen Clocck1=11; couunt:=0; elsee Clocck1=00; end if; if (couunt=1000 orr coountt=3000 oor ccounnt=5500 ) tthenn Clocck3=11; elsee Clocck3=00; end if; end if; end proocesss; end couunt6625_arcc; 其中cllk为66MHzz的时钟钟;enn控制波波形的产产生; Cloock11为96600HHz的接接收时钟钟; CClocck3为为3倍频频的采样样时钟。 4.2 接收电电路的设设计
15、串串行接收收电路首首先要能能判断接接收数据据的到来来,即每每一帧的的开始,然然后对数数据进行行3次采采样,最最后判决决输出。为为简化设设计,帧帧格式仍仍然采用用1位开开始位+8位 数据位位+1位位停止位位。下面面是设计计的接收收电路VVHDLL程序: librraryy ieeee; use ieeee.sstd_loggic_11664.aall; entiity comm_reeceiive110 iis portt(coom,cclr,clkk1,cclk33:inn sttd_llogiic;QQ:ouut sstd_loggic_vecctorr(0 to 9);Vallid:out
16、t sttd_llogiic); end comm_reeceiive110; archhiteectuure comm_reeceiive110_aarc of comm_reeceiive110 iis Signnal Enaablee:sttd_llogiic :=11; Signnal Holld:sstd_loggic :=0; Signnal N:sstd_loggic_vecctorr(0 to 2) :=0000; begiin Valiid=Enaablee annd HHoldd; proccesss(cllk1,clrr) variiablle NNum:inttegee
17、r rrangge 00 too 9 :=00; begiin if cclr=0 thhen Enabble=11 ; Nuum:=0; Q=0000000000000; elsiif (rissingg_eddge(clkk1) thhen Q(Nuum)=(NN(0) annd NN(1) oor (N(11) aand N(22) or (N(0) andd N(2); if NNum=9 tthenn Enabble=00; Numm:=00; elsee Num:=Nuum+11; end if; end if; end proocesss; proccesss(cllk3,clr
18、r) variiablle mm:inntegger rannge 0 tto 22 :=0; begiin if cclr=0 thhen m:=00; elsiif(rrisiing_edgge(cclk33) theen N(m)=ccom; if mm=2 theen m:=00; elsee m:=mm+1; end if; end if; end proocesss; proccesss(cllr,ccom) begiin if cclr=0 thhen Holdd=0; elsiif ffalllingg_eddge(comm) tthenn Holdd=1; end if; e
19、nd proocesss; end comm_reeceiive110_aarc; 其中,NN(m)=ccom 用来对对波形采采样;QQ(Nuum)=(NN(0) annd NN(1) oor (N(11) aand N(22) or (N(0) andd N(2)是对其其中1位位数据的的3次采采样结果果判决;Numm用来记记录接收收的数据据位数;falllinng_eedgee(coom)是是用来时时实检测测每一帧帧的起始始位(即即下 降降沿)的的到来;Vallid=Ennablle aand Holld用来来输出到到波特率率发生器器电路单单元控制制时钟的的产生,最最后将一一帧的110位数数
20、据输出出。 用MAXX+pllus II 9.33 Baasellinee将上面面两个VVHDLL文件制制成库器器件,然然后在电电路图上上调出来来,最后后做成的的串行接接收电路路图如图图4所示示。 4.3 时序仿仿真 时时序仿真真如图55所示,RReceeivee为接收收到的序序 列波形,最最后结果果:接收收到的数数据位为为6D,起起始位为为0,停停止位为为1。 5 结束束语 VHDLL语言设设计的出出现从根根本上改改变了以以往数字字电路的的设计模模式,使使电路设设计由硬硬件设计计转变为为软件设设计,这这样提高高了设计计的灵活活性,降降低了电电路的复复杂程 度,修修改起来来也很方方便。 利用V
21、VHDLL设计的的灵活性性,根据据串行通通信协议议的要求求,可以以在实验验室利用用先进的的EDAA工具,用用VHDDL设计计出符合合自己实实际需求求的异步步串行通通信电路路。 本文设计计出的基基于VHHDL异异步串行行通信电电路,在在实验室室已经与与计算机机串口RRS-2232进进 行了了通信实实验(注注意:TTTL和和RS-2322逻 辑辑电平的的转换)。实验验证明,00至2555的所所有数据据都能被被正确收收、发。 参考文献献: 1 ARMMSTRRONGG J R, FRAAY FF G. VHHDL设设计表示示和综合合M.李宗宗伯,王王蓉晖译译.北京京:机械械工业出出版社, 20002. 2 SKAAHILLL KK.可编编程逻辑辑系统的的VHDDL设计计技术M.朱明程程,孙普普译.南南京:东东南大学学出版社社,19998. 3 仇玉章章. 微微型计算算机系统统接口技技术MM. 南京:江苏科科技出版版社,119977.