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

发布者:SparklingEyes最新更新时间:2012-04-09 来源: 维库关键字:PLD  AVR  总线通信  VHDL 手机看文章 扫描二维码
随时随地手机看文章

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部分源码如下:

地址锁存:

写数据进程:

读数据进程:

[page]

 

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的通信速度大大提高,同时也提高了嵌入式系统或是工业控制中的其他相关性能,极大提高产品的竞争力。

关键字:PLD  AVR  总线通信  VHDL 引用地址:基于PLD与AVR总线通信接口VHDL设计与实现

上一篇:基于ATMEGA16的高精度低压无功功率补偿器系统设计
下一篇:基于AVR的铅酸蓄电池管理系统设计

推荐阅读最新更新时间:2024-03-16 12:57

天龙DENON AVR-1507功放机内部拆解
朋友的一台坏天龙DENON AVR-1507功放机,他说这个功放在地下室放很久了,拿去维修没修好,后来就放弃维修了,我说我来修修看吧,以前有别人修过,检查发现主声道烧了一路,其他完好,这个机器7声道都是75W,采用D2390和B1560功放对管,这是复合管。 之前维修的把D2390换成D1047导致后来又烧了,结果还烧了一片,主声道带AB组的功能,两组同时用的话,很容易过载烧机,于是为了保主声道,我把后置环绕的配件挪到主声道,先修好主声道,再折腾后置环绕,这个后置环绕单独可以关闭输出,平时几乎也不用,这样修好后,估计保险点。 7个声道满功率的话,这变压器能扛得住?
[嵌入式]
天龙DENON <font color='red'>AVR</font>-1507功放机内部拆解
基于时间触发嵌入式系统的设计与应用(3)
简介:本文设计了基于AVR微控制器的时间触发多任务调度器并应用于实际。该调度器使用传递消息(message)的方式使得微控制器在多个任务及设备间切换。 5.应用实验 以电磁炉系统为例,进一步介绍基于AVR微控制器的时间触发嵌入式系统的具体应用。 电磁炉系统是一个复杂的嵌入式系统,如图2所示,AVR要处理大量的外围设备,为便于开发,将整个程序按照硬件及功能进行模块划分,各个功能模块之间通过传递消息的方式来完成多任务的处理。 针对该应用,可设计功能模块:MSGMap ,该数组由各个功能模块组成,具体子函数如表1所列,使用函数数组的方式可以增强程序的扩展能力。如果有新的外设,只需在这里添加对应的模块入口,并完成相应的模块就可
[单片机]
基于时间触发嵌入式系统的设计与应用(3)
基于DeviceNet总线的从设备通信适配器设计
  引 言     DeviceNet是一个开放的网络标准。规范和协议都是开放的——供应商将设备连接到系统时,无需为硬件、软件或授权付费;任何人都能以名义上的复制成本(目前为250美元+邮费)从开放式DeciceNet供应商协会(ODVA)获得DeviceNet规范。     本设计针对的DeviceNet从设备特性如下:属于DeviceNet group 2 only 从设备;采用Predefine的通信连接;可通过硬件开关设置125 kbps、250 kbps、500 kbps波特率;可通过硬件开关设置0~63 MAC ID。在软件、硬件设计前应首先进行从设备(泵/阀)I/O需求分析(即profile文档设计)
[嵌入式]
AVR单片机串口红外线传输试验程序
为了验证串口红外传输速度,我搭建了这个小系统。 问题从红外线接收头开始,我使用现成的红外遥控接收头,这就省去了搭建放大整形等等麻烦,但限制也就此产生,后述。红外头内部有40KHZ的选通,所以数字信号必须搭载在40KHZ上。 用74LS00作40KHZ方波发生器,使用如图阻容,产生的方波大致在需求范围。 先想用40KHZ晶振,拆了两个遥控器,445KHZ,不能用,所以还是阻容法,这个50000P是我反复调整的结果。 选用74LS00主要看上它有与门,我们用10脚、9脚入,8脚出这个与非门,把数字信号和载波信号“与”在一起。 遥控接收的要求是,无信号就无载波,串口输出等待状态为高电平,所以用与非门反向一下,13、12脚入,11脚出即是
[单片机]
<font color='red'>AVR</font>单片机串口红外线传输试验程序
AVR单片机的RTOS-AVRX应用
摘 要:详细介绍AVR系列单片机的专用实时嵌入式操作系统AVRX的特点,并以ATmega16单片机为平台,结合AVR单片机应用实例分析AVRX的内核代码及移植方法,并对系统的相关性能进行测试。采用AVRX可以大大简化程序设计,满足实时要求,降低编程难度,提高系统可靠性。本文为在AVR单片机上进行嵌入式系统开发提供了参考。 关键词: RTOS AVRX AVR单片机移植 系统测试 引 言 随着技术的发展,嵌入式系统的设计及应用对人们的生活产生了很大的影响,并将逐渐改变人们未来的生活方式。在特定的操作系统上开发应用程序,可以使开发人员忽略掉很多底层硬件细节,使得应用程序调试更方便、易于维护、开发周期缩短并且降低开发成本,因而嵌入
[单片机]
avr单片机+RFID的门禁系统
设计文档: 单片机源程序如下: /****************************************************************************************************************** 程序名: 射频卡门禁系统 功能概述: 1、 点阵LCD(128*64)显示。在正常、设置情况下LCD显示系统各个时期的菜单以供选择。 2、 射频卡开锁,开锁时用射频卡放在读卡器上(距离 15CM)即可开锁,如果用非法卡连续刷写次数超过3 次则报警(报警功能没有添加),这时系统将关闭刷
[单片机]
<font color='red'>avr</font>单片机+RFID的门禁系统
Delay.h头文件下载-AVR系列单片机的通用软件延时头文件
/***************************************************************************** 文件名称:Delay.h 文件标识:_DELAY_H_ 摘 要:AVR系列单片机的通用软件延时头文件 当前版本:V1.0 *****************************************************************************/ #ifndef _DELAY_H_ #define _DELAY_H_ #include BaiYuAvrKuDataType.h #include BaiYuAvrK
[单片机]
avr单片机的AD转换实验
AD转换实验。 1、AD转换实验。程序进行周期AD转换,在并转换值显示在数码管上。 2、使用内部1 M晶振。 3、进行此实验需要插上:JP1的所有8个短路块、JP9(A/D)。 4、此实验采用项目化管理,主要文件有ADC、DISP、主程序。 */ #include "iom16v.h" #include macros.h #include "iom16v.h" #include macros.h extern unsigned char get_ad(void);/*AD采样函数*/ extern void Disp_Init(void);/*显示初始化*/ extern unsigned char led_buf ;/*
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved