资源描述:
《一种多通道脉冲计数器的eda方法设计new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9卷第14期2009年7月科学技术与工程Vol19No114July2009167121819(2009)1424006206ScienceTechnologyandEngineeringZ2009Sci1Tech1Engng1通信技术一种多通道脉冲计数器的EDA方法设计姚海军(西安航空职业技术学院计算机工程系,西安710089)摘要介绍了用CPLD+HDL的EDA技术作为开发手段,实现对多通道的脉冲信号计数的脉冲计数器的设计,并利用单片机将计数结果传给上位机,论述了基于VHDL语言和芯片的数字系统的设计思
2、想和过程,通过对设计结果的系统仿真波形分析,验证了计数器设计的正确性。关键词多通道脉冲计数器复杂可编程逻辑器件(ConplexProgrammableLogicDevice,CPLD)甚高速数字电路硬件描述语言(Very2Higl2SpeedIntegratedCircintHardwareDescriptionLanguage,VHDL)波形仿真单片机中图法分类号TN788;文献标志码A目前,随着电子技术的飞速发展,数字系统规模越来越大,传统的电路设计已难以适应复杂电子1系统的组成和工作原理系统的设计要求。
3、从而使得电子设计自动化(EDA)技术迅速发展,成为硬件电子电路设计领域利用Max+plusII软件、可编程逻辑器件CPLD中的主要设计手段。而VHDL语言则是EDA的关及VHDL语言编辑16位二进制计数器和锁存器,16键技术之一,他采用了自顶向下的设计方法,即在位二进制计数器的输出送给锁存器,锁存器的输出整个设计流程中各设计环节逐步求精的过程。脉通过单片机传输到上位机上显示。冲计数器广泛应用于各个领域。本课题所设计的系统的组成框图如图1所示。多通道脉冲计数器是应用于计算陀螺仪的输出脉冲个数。多通道脉冲计数器读
4、取陀螺仪输出的脉冲,从而得到物体在空间坐标X,Y,Z正负轴对应的脉冲数,因此要求设计六通道的16位的二进制计数[1]器。本文设计的多通道脉冲计数器就是采用CPLD芯片和VHDL语言设计的六通道十六位二进制计数器,每隔4ms通过单片机将计数结果传给上位机。采用Altera公司的EPF10K10LC84型号的芯图1多通道脉冲计数器原理框图片,实现了对多路脉冲进行计数。具有体积小、速[2]度快、可靠性高、低功耗、开发周期短的特点。2CPLD功能模块的设计2009年3月24日收到第一作者简介:姚海军(1966)),男
5、,陕西富平人,副教授,高级工本设计的CPLD功能模块包括16位二进制计程师,研究方向:计算机软件、数据库技术、PLC/DCS。E2mai:l数器、16位的锁存器、分频器三部分,其中计数器和yao.yh@j163.com。分频器模块用VHDL语言来设计,锁存器模块用图14期姚海军:一种多通道脉冲计数器的EDA方法设计4007形编辑来实现。分频器的输出接锁存器的使能端,生成的原理图如图2所示。[3]用于产生锁存信号。2.1计数器模块的设计本模块用VHDL语言编程,部分程序如下所示:architecturearch
6、countofcounter1issignalc:std_logic_vector(15downto0);图2计数器生成图beginclk为所要测的输入脉冲,rst为复位端,高电平process(clk,rst)有效,当rst为低电平时,计数器计数,高电平时计数beginifrst=1't'henc<=(others=>0')';器清零。elsif(clke'ventandclk=1')'then2.2锁存器模块的设计c<=c+1';'用MAX+PLUSII软件可以混合输入的优点,采endi;f用图形来设计锁
7、存器模块,这里用两个8位的锁存endprocess;器74374来组合成一个16位的锁存器,其原理图如cnt<=c;endarchcount;图3所示。图316位锁存器模块2.3分频器模块的设计entitydivisGENERIC(N:integer:=32768);锁存器的锁存信号为4ms,由8.192M的晶振port(clk:instd_logic;通过32768分频产生,分频器模块的设计采用fourms:outstd_logic);VHDL语言来实现,部分程序如下所示。enddiv;4008科学技术与工
8、程9卷architecturearcdivofdivisendi;fsignalcount:integer;endi;fbeginendprocess;process(clk)endarcdiv;begin生成的图形文件如图4所示。if(clke'ventandclk=1')'thenif(count=N-1)thencount<=0;else图4分频器生成图count<=count+1;ifcou