PLD与AVR总线通信接口VHDL设计与实现

发布者:uioo9158最新更新时间:2008-11-12 来源: EDN CHINA关键字:PLD  总线控制器  VHDL  AVR  读写  Quartus  累加器  通信接口  系列单片机  设计与实现 手机看文章 扫描二维码
随时随地手机看文章

  1、引言

  嵌入式系统在日常生活中的大量使用,人们也对其性能和速度提出了更高的要求。微控制器和可编程逻辑器件的结合,更能充分发挥嵌入式系统的优势。本文设计和实现的微控制器与可编程逻辑器件之间总线读写方式通信比传统的串行通信更可靠、速度更快。下面是一些相关术语的说明。

  总线:任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线将会错综复杂,甚至难以实现。为了简化硬件电路设计、简化系统结构,常用一组线路,配置以适当的接口电路,与各部件和外围设备连接,这组共用的连接线路被称为总线[2]。采用总线结构便于部件和设备的扩充,尤其制定了统一的总线标准则容易使不同设备间实现互连。

  AVR:ATMEL公司的AVR单片机,是增强型RISC内载Flash的单片机,芯片上的Flash存储器附在用户的产品中,可随时编程,再编程,使用户的产品设计容易,更新换代方便。AVR单片机采用增强的RISC结构 ,使其具有高速处理能力,在一个时钟周期内可执行复杂的指令。本系统采用的AVR Mega64L还具有:用32个通用工作寄存器代替累加器,从而可以避免传统的累加器和存储器之间的数据传送造成的瓶颈现象;一个时钟周期执行一条指令;可直接访问8M字节程序存储器和8M字节数据存储器寄存器等特点[3]。

  PLD(Programmable Logic Device):PLD分为CPLD(Complex Programmable Logic Device)复杂的可编程逻辑器件和FPGA(Field Programmable Gate Array)现场可编程门阵列两大类[2、3]。

  两者的功能基本相同,只是实现原理略有不同,所以我们有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/FPGA。PLD是一种具有丰富的可编程I/O引脚的可编程逻辑器件,具有在系统可编程、使用方便灵活的特点;不但可实现常规的逻辑器件功能,还可实现复杂的时序逻辑功能。把PLD应用于嵌入式应用系统,同单片机结合起来更能体现其在系统可编程、使用方便灵活的特点。PLD同单片机接口,可以作为单片机的一个外设,实现单片机所要求的功能。实现了嵌入式应用系统的灵活性,可以大大缩短设计时间,减少PCB面积,也提高了嵌入式应用系统的性能。

  VHLD:VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,一种被IEEE和美国国防部确认为标准硬件描述语言。VHDL主要用于描述数字系统的结构、行为、功能和接口。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分)和内部(或称不可视部分),涉及实体的内部功能和算法完成部分[4,5]。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。

  2、PLD同单片机接口设计

  系统中采用的MAX II EPM570 芯片有逻辑单元数(LE)570个,等效典型宏单元数440个,最大用户I/O管脚数160个,用户Flash存储器比特数8192,tPD1 角对角性能5.5 ns,tPD2最快性能3.7 ns。采用100-pin TQFP封装。

  EPM570同单片机接口原理如图1所示。

  

  图1 ATmega64L与EPM570接口示意图

  EPM570同单片机接口设计中,单片机采用Atmel公司的AVR系列的ATmega64L。ATmega64L通过ALE、CS、RD、WE、P0口(数据地址复用)同EPM570芯片相连接。ALE:地址锁存信号;CS:片选信号;RD:读信号;WR:写信号;AD0~AD7:数据地址信号复用数据线。

  本系统的设计思想是:在EPM570设置两个内部控制寄存器,通过单片机对两个控制寄存器的读写来完成对其它通信过程的控制。EPM570设置的两个控制寄存器,可以作内部寄存器,也可以直接映射为I/O口,根据实际需要而进行设置。

  本系统设计的关键是:在EMP570 上实现的存储器的读写时序要满足ATmega64L对外部读写时序的需要,有关ATmega64L对外部读写时序请参考相关资料和ATmega64L的数据手册。

  3、PLD同单片机AVR读写接口VHDL实现

  PLD的设计流程[6,7]一般应包括以下几部分:

  ① 设计输入。可以采用原理图输入、DHL语言描述、EDIF网表读入或波形输入等方式。

  ② 功能仿真。此时为零延时模式,主要检验输入是否有误。

  ③ 编译。主要完成器件的选取及适配,逻辑的综合及器件的装入,延时信息的提取。

  ④ 后仿真。将编译产生的延时信息加入到设计中,进行布局布线后的仿真,是与实际器件工作时的情况基本相同的仿真。

  ⑤ 编程验证。有后仿真确认的配置文件下载到PLD相关配置器件中,加入实际激励,进行测试,以检查是否完成预定功能。

  以上各步骤若出现错误现象,则需要重新回到设计阶段,修正错误输入或调整电路,在重复上述过程直到其完全满足电子系统需要。

  本系统中,使用Altera公司提供的集成开发软件Quartus II 6.0 进行设计,在进行模块实现时请参考ATmega64L的数据手册中关于ATmega64L对外部存储器的读写时序。

  本设计实现的VHDL部分源码如下:

  地址锁存:

  

  写数据进程:

  

  读数据进程:

  

  4、仿真验证结果

  使用Quartus II 6.0 自带的仿真软件仿真结果如图2和图3所示。图中ale、cs、rd、we、mcu_data 是激励信号,表示ATmega64L 相应接口信号,conreg1和 conreg2 为EPM570 输出信号,其目的是为了观察仿真结果是否正确,而实际应用中应根据项目需求而进行添加或是减少相应的I/O口。

  图2是ATmega64L向 EPM570 写数据过程。首先,在片选信号cs为低期间,在ale信号的下降沿,锁存mcu_data上的数据到add内部地址锁存寄存器。然后,在we信号低电平时,把mcu_data (0XAA)的数据直接写到conreg1(B10101010),通过外接指示灯可以直接观察结果是否正确,当然,在实际应用中可以把数据锁存到内部寄存器中。

  

  图2写数据0X“AA”到0地址处

  图3是读数据过程。在片选信号为低期间,首先,在ale信号的下降沿,锁存mcu_data(0X01)数据到add内部地址锁存寄存器。然后,在rd信号的低电平期间,把内部寄存器地址为0X01的数据reg02(0xAA)读到mcu_data数据线上传回单片机ATmega64L。

  

  图3 读地址为0X“01”上的数据0x“AA”并传回数据总线

  从读写数据图中可以看出,ATmega64L对EPM570内部数据读写过程完全满足ATmega64L数据手册上的时序需要。关于ATmega64L的读写时序可以参考ATmega64L数据手册。

  5、结语

  本文实现PLD与AVR ATmega64L通信接口设计是笔者设计的一种纺织机械控制设备的一部分,经实际验证完全正确,并已投入生产。简单地修改该读写通信模块,可应用于多个CPLD或FPGA与单片机通信接口的项目中,本模块还可以根据需要扩展为16位、32位地址线的读写接口。

  本文创新点:充分利用可编程逻辑器件丰富的I/O口和内部可编程逻辑资源,通过总线读写的方式通讯,使PLD和MCU的通信速度大大提高,同时也提高了嵌入式系统或是工业控制中的其他相关性能,极大提高产品的竞争力。

  参考文献

  [1]乔庐峰(译). VHDL数字电路设计教程. 北京: 电子工业出版社, 2005.

  [2]白云飞. 现场总线的技术特点和发展趋势. 机械管理开发-2007年1期.

  [3]李家星. 基于嵌入式系统和FPGA的通用总线控制器的设计与实现[J].微计算机信息,2007,1-2

  [4]金春林,邱慧芳等. AVR系列单片机C语言编程与应用实例. 北京:清华大学出版社,2003.

  [5]潘松. VHDL实用教程. 成都: 电子科技大学出版社, 2000.

  [6]杨刚,龙海燕. 现代电子技术—VHDL与数字系统设计[M]. 北京: 电子工业出版社, 2004.

  [7]蒋璇,臧春华. 数字系统设计与PLD应用. 北京: 电子工业出版社, 2005.

  [8]杨宗凯. 数字专用集成电路的设计与验证[M]. 北京: 电子工业出版社, 2004.

 

关键字:PLD  总线控制器  VHDL  AVR  读写  Quartus  累加器  通信接口  系列单片机  设计与实现 引用地址:PLD与AVR总线通信接口VHDL设计与实现

上一篇:基于单片机和GPRS的矿区铁路道口监测系统
下一篇:提高RS485总线通信速度的一种设计

推荐阅读最新更新时间:2024-03-30 21:26

AVR ELF文件的生成与烧录
通常AVR芯片包括flash,eeprom,fuse,lockbits,user signature等几个非易失的内容需要在编程时烧录到芯片中,其中fuse部分是只有外部的编程器可以进改写,应用程序本身是无法更改的。 在进行ISP烧录过程中,用户希望使用点一个按钮这样单一的动作来完成烧录,这就要求能把几个不同部分的擦出、烧写、比较的动作合成在一起来完成。可以使用ELF格式来完成这个目标,ELF格式的目标文件中可以包含不同的区域段,下载工具可以分别提取烧录到相应的位置。 1)使用Atmel Studio 6进行的软件开发 如果开发者使用是Atmel Studio 6(或者是AVR Studio 4/5,总之是GCC就行)
[单片机]
<font color='red'>AVR</font> ELF文件的生成与烧录
MSP430F149系列单片机的I AP功能设计
TI公司的MSP430系列单片机是具有很高实用性价值的产品,在许多领域得到广泛的应用,特别是它的超级低功耗特性,是目前所有其他单片机无法比拟的。IAP(InApplication Programming)是用户自己的程序在运行过程中对用户Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。 要实现IAP功能,通常需要在设计固件程序时编写两个项目代码:第一个项目程序不执行正常的功能操作,而只是通过某种通信管道(如USB、USART、一些无线设备)接收程序或数据(可执行HEX文件),执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。这两部分项目代码同时烧录在用户Fla
[单片机]
MSP430F149<font color='red'>系列单片机</font>的I AP功能设计
低速率无线传感器网络演示系统的设计与实现
引言 无线传感器网络能够实时监测、感知和采集网络分布区域内的各种环境或监测对象的信息,并对这些信息进行处理,获得详尽而准确的数据,并传送到需要这些信息的用户。 目前,这一领域主要的研究方面是MAC层协议和网络层路由协议。而要进行这两方面的研究,物理实验平台是必需的。 总体设计 本文设计并实现了一个比较完整的无线传感器网络演示系统,主要包括节点机、网关机和数据库系统。此系统实现了远程环境数据的采集、传输、处理及数据库管理。并且在节点数大量增加后,还可作为传感器MAC层和网络层协议的开发平台。 系统组成框图如图1所示,在传感器节点网络部分,有两个子网,各网独立工作,运行在不同的频段,一个是2.4GHz,另一个是900
[单片机]
低速率无线传感器网络演示系统的<font color='red'>设计与实现</font>
命令行读写i2c寄存器操作
写命令格式: 寄存器地址 长度 数据 读命令格式: # echo “寄存器地址” getreg # cat getreg 1.使能寄存器 # adb shell echo 0x01,0x01,{0xff} /sys/bus/i2c/devices/1-20/setreg 2.禁掉寄存器 # adb shell echo 0x01,0x01,{0x00}” /sys/bus/i2c/devices/1-20/setreg 3.读寄存器 # adb shell echo 0x01 /sys/bus/i2c/devices/1-20/getreg # adb shell cat /sys/bus/i2c/devic
[单片机]
pic16f877A软件模拟I2C通信读写24C02
;该试验功能是 单片机 复位一次,自动从24C02中读取数据到 数码管 显示,然后对值加1再写入24C02,最终数码管中的数据就是开机的次数,具有一定的实用意义 ;本 电路 所使用24C02为ATMEL的,或不是该厂的,则烧写时间可能会有差异 ;必须调整本程序的DELAY时间 ;本实战的目的是让大家进上步熟悉I2C通信的时序,熟悉24CXX的读写,会用软件模拟I2C通信 ;硬件接法: ;1.24CXX的SDA接877A的RB5口,SCLK接877A的RB4口,WP接地,A0,A1,A2接地 LIST P=16F877A, R=DEC include P16F877A.inc ;********************
[单片机]
基于RFID的汽车防盗系统设计与实现
0 引言 射频识别技术(RFID,即Radio Frequency I-dentification)是从20世纪80年代开始走向成熟的一项自动识别技术。它利用射频方式进行非接触式双向通信方式来交换数据以达到识别目的。可用于识别高速运动物体并可同时识别多个射频卡,而且操作快捷方便,不怕油渍、灰尘污染等恶劣的环境,特别适合于实现系统的自动化且不易损坏。本文介绍的射频识别系统是将射频识别技术应用到汽车防盗系统中的一次成功尝试。 1 RFID汽车防盗系统概述 随着科技的发展,汽车防盗装置日趋严密和完善,目前防盗器按其结构与功能可分四大类:机械式、电子式、芯片式和网络式,虽然各有优劣,但汽车防盗的发展方向则向智能程度更高的芯片式和网络
[应用]
采用AVR单片机汇编语言实现AES加密算法及其优化
AES是美国高级加密标准算法,将在未来几十年里代替DES在各个领域中得到广泛应用。本文在研究分析AES加密算法原理的基础上,着重说明算法的实现步骤,并结合AVR汇编语言完整地实现AES加密和解密。根据AES原理,提出几种列变化的优化算法,并根据实验结果分析和比较它们的优缺点。 随着对称密码的发展,DES数据加密标准算法由于密钥长度较小(56位),已经不适应当今分布式开放网络对数据加密安全性的要求,因此1997年NIST公开征集新的数据加密标准,即AES 。经过三轮的筛选,比利时Joan Daeman和Vincent Rijmen提交的Rijndael算法被提议为AES的最终算法。此算法将成为美国新的数据加密标准而被广泛应
[单片机]
采用<font color='red'>AVR</font>单片机汇编语言实现AES加密算法及其优化
AVR 单片机 位操作
在汇编里面位造作用 SEI PORTA 3,把PORTA的第三位置1 , 在C里面,可以用&与|表达: PORTA=PORTA|0x08, 简写为PORTA|=(0x08); PORTA=PORTB&(0xF7) 简写为PORTA&=0xF7 以上是对寄存器的某一位操作,当然也可以同时操作几个位, |0x0F ,则低四位置1; 在很多地方,如ATMEL的文档里我们会看到像TCCR1A|=(1 COM1A0);//A比较匹配, 这样的操作,这是怎么回事呢? 首先要知道 , 的意思,这是左移,右移操作,(A 3)是把A的二进制数向左移3位,即乘以2的三次方. COM1A0是TCCR1A的第6位,这是ATME
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
最新工业控制文章
更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved