您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页MCS_51单片机与FPGA接口逻辑设计的VHDL实现_付扬

MCS_51单片机与FPGA接口逻辑设计的VHDL实现_付扬

来源:意榕旅游网
 自动化与仪器仪表

ZIDONGHUAYUYIQIYIBIAO 2003年第5期(总第109期) 文章编号:1001-9227(2003)05-0039-04

MCS-51单片机与FPGA接口逻辑设计的VHDL实现

付 扬

(辽宁石油化工大学信息工程学院 抚顺,113001)

摘 要:本文阐述了单片机和现场可编程门阵列FPGA各自的特点,指出在波形发生器设计中两者相结合设计的优势和在设计中所遇到的接口逻辑设计这个难点,详细给出了接口逻辑设计的VHDL程序。通过该接口程序设计,实现了单片机技术和EDA技术相结合,从而实现了所要求波形发生器的设计。

关键词:单片机 FPGA(现场可编程门阵列) PLD(可编程逻辑器件)

ABSTRACT:Thispaperexpatiatedeachfeatureofsinglechipandfieldprogrammablegatearray(FPGA).Itcomesoutadvantagestheircombinationinwaveoccurringequipmentandthedifficultyfallingacrossinthedesign.ItpresentedparticularlyVHDLprogramoftheportlogicdesign.Throughtheportlogicdesign,thewaveoccurringe-quipmenthasrealizedcombiningsinglechipandEDA(ElectronicsDesignAutomation)technology.

KEYWORDS:PC FPGA PLD

中图分类号:TP368.1

文献标识码:B

器件系列,每个FLEX10K器件包含一个嵌入式阵列和一个逻辑阵列。嵌入式阵列用来实现各种存储器及复杂的逻辑功能。逻辑阵列用来实现普通逻辑功能。嵌入式阵列和逻辑阵列结合而成的嵌入式门阵列具有高性能、高密度、灵活的互连方式、支持多电压I/O接口、多种配置方式以及低功耗等特性。

在此设计中,我们感到,单片机和FPGA完成各自功能设计较容易实现,关键的难点是两者的接口设计。经过不断的摸索,我们终于以VHDL语言实现了接口程序设计,从而圆满实现了整个波形发生器的设计。1 单片机与FPGA接口逻辑设计的VHDL实现在设计中,单片机与FPGA接口采用总线方式。单片机以总线方式与FPGA进行数据与控制信息通信有许多优点。如速度快,其通信工作时序是纯硬件行为;节省PLD芯片的I/O口线;相对于非总线方式,单片机编程简捷,控制可靠;在FPGA中通过逻辑切换,单片机易于与SRAM或ROM接口等。

单片机与FPGA通信接口程序(名为MCS51)通过编译后,生成的逻辑符号如图1所示。

其各引脚功能为:P26:输入信号,作为FPGA的片选端,低电平有效,高电平时保持现有状态,与单片机的P2.6相连;WR:输入信号,为FPGA的写信号,与单片机的写端口相连,当P26为低电平时,单片机可向FPGA写数据,以达到

39

0 引 言

可编程逻辑器件(PLD)及EDA技术的应用成为电子系统设计的潮流。FPGA是一种新兴的可编程逻辑器件(PLD),与其它PLD相比,具有更高的密度、更快的工作速度和更大的编程灵活性。

单片机以其体积小、功能齐全、价格低廉、可靠性高等方面所具有的独特优点,长期以来被广泛的应用在各领域。

基于FPGA的高密度、高速度、现场可编程的能力和单片机强大的数据处理功能,制作了波形发生系统,用于产生各种频率的正弦波、方波和三角波,其幅值0~5V可调,频率步进达到1Hz以下,频率范围1Hz~100kHz。

该波形发生器以单片机(MCS8031)为中心控制系统,FPGA片内实现DDS技术,在此DDS技术中,采用6级BCD比例乘法器级联。首先由单片机将E2PROM28c64中存入波形数据。FPGA在单片机的控制下,利用较高的时钟频率(16M)生成用户要求的频率的128倍频,并以此频率在E2PROM28c64取波形数据,将其发送给D/A转换器,并通过滤波器输出。同时单片机实现对输出电压的控制。

本设计中,FPGA选用Altera公司的FLEX10K,晶振频率可达40MHz。使用MAX+PLUSÒ开发系统支持。FLEX10K系列是FLEX系列当中非常有代表性的FPGA

if(aleceventandale=-0.)then address<=p0; endif; endprocess;

process(P26,address) begin

if(p26=-0.)then

传送命令以及数据的目的;ALE:输入信号,与单片机的ALE信号相连,用于FPGA片内锁存地址,配合WR信号进行单片机与FPGA的通信;P0[7..0]:输入信号,共8条数据线,为单片机PO口的接口,用于地址和数据的传送;SEL:输出信号,用于控制波形的形状,共有三种波形(正弦波、方波、三角波);Q0[3..0]~Q5[3..0]:输出信号,用于6级级联乘法器的置数输入;ST:输出信号,为级联乘法器的片选端,低电平有效。

FPGA片内实现寄存器,可对单片机传输的数据和命令进行寄存,具体如下:

命令寄存器:

入口地址:FFH命令字:FFH(ST有效),OOH(ST无效)。入口地址:OOH命令字:EOH(显示正弦波,sel为00)E1H(显示方波,sel为01)E2H(显示三角波,sel为10)

数据寄存器:

入口地址:01H,02H,03H分别存储单片机传送的6位10进制数。这些数据是用户要求的频率数通过单片机乘8处理后传送过来的,为乘法器提供频率数据。MCS51源程序libraryieee;

useieee.std-logic-1164.all;useieee.std-logic-unsigned.all;useieee.std-logic-arith.all;entitymcs51is

prot(wr,p26,ale:instd-logic;

p0:instd-logic-vector(7downto0);

q0,q1,q2,q3,q4,q5:outstd-logic-vector(3downto0);

st:outstd-logic;

sel:outstd-olgic-vector(1downto0));end:

architecturertlofmcs51is

signalwren0,wren1.wren2,wren3,wren4:std-logic;signaladdress,data0,data1,data2,data3, data4:std-logic-vector(7downto0);begin process(ale) begin40 if(address=d00000000d)then wren0<=wr; else

wren0<=-1.; endif; endif;

endprocess;

process(p26,address) begin

if(p26=-0.)the

if(address=0000000010)then wren1<=wr; else

wren1<=-1.; endif; endif;endprocess;

process(p26,address) begin

if(p26=-0.)then

if(address=0000000100)then wren2<=wr; else

wren2<=-1.; endif; endif;endprocess;

process(p26,address) begin

if(p26=-0.)then

if(address=0000000110)then wren3<=wr; else

wren3<=-1.; endif; endif;endprocess;process(p26,address) begin

if(p26=-0.)then

if(address=0111111110)then wren4<=wr; else

wren4<=-1.; endif; endif;endprocess;process(wren0) begin

If(wren0ceventandwren0=-0.)then if(P26=-0.)then data0<=p0; else

data0<=data0; endif; endif;endprocess;process(wren1)

begin

If(wren1ceventandwren1=-0.)then if(P26=-0.)then data1<=p0; else

data1<=data1; endif; endif;endprocess;

process(wren2) begin

If(wren2ceventandwren2=-0.)then if(P26=-0.)then data2<=p0; else

data2<=data2; endif; endif;endprocess;process(wren3) begin

If(wren3ceventandwren3=-0.)then if(P26=-0.)then data3<=p0; else

data3<=data3; endif;

endif;endprocess;process(wren4) begin

If(wren4ceventandwren4=-0.)then if(P26=-0.)then data4<=p0; else

data4<=data4; endif; endif;endprocess;process(data4)

begin

if(data4=/000000000)then st<=-0.

elsif(data4=/111111110)then st<=-0.; else

st<=-0.; endif;endprocess;

process(data0) begin

if(data0=/111000000)then sel<=/000

elsif(data0=/111000010)then sel<=/010

elsif(data0=/111000100)then sel<=/100; else

sel<=/000; endif;endprocess;

q1<=data(7downto4);q0<=data(3downto0);q3<=data2(7downto4);q2<=data2(3downto0);q5<=data3(7downto4);q4<=data3(3downto0);

endrtl;

根据以上设计,编译成功后,进行模拟仿真,仿真结果如图2。由仿真结果可以看出设计的正确性。将此设计下载到FLFX10K器件,并连接单片机及外围电路,成功的实现了整个波形发生器系统设计。

(下转第53页)

41

节。目前学校对实验教学环节非常重视,已把电路实验单独设课,并增加必要的财政投入和人员投入,更新了实验设备和实验内容,这是提高实验教学质量和水平的重要措施。它是培养学生动手能力、独立分析解决问题的能力、革新能力和理论联系实际能力的重要教学手段。有可能时将逐步开放实验室,适当增加实验时数作为电路课程中的应用计算机解题的实践。5 重视学科发展新动态

为了教育学生学会学习,提高电路课程的教学质量,教师除了在教学方法上下功夫外,还必须密切注意学科发展的新动态,在教学内容的组织上,不断丰富、补充才能跟上新形势发展的需要。由于知识更新几乎以几何级数的速度增长,而教材的出版周期较长。目前教科书介绍的电路,大多数属于较简单的网络,且只适用于手算。随着大规模及超大规模集成电路的发展,电路的计算愈来愈复杂。因为复杂网络中既有平面电路,也有非平面电路,不可能用手算,只能应用计算机进行运算。因此,在介绍一般电路的分析方法如节点法、回路法时,若所用教材尚未及时补充更新有关内容,这时,教师应强调列写标准形式方程的必要性,即规范化的目的是为了能使用计算机求解。虽然限于条件,目前未能全面铺开实现上机练习,但可使学生了解学科发展动态,开阔思路。(上接第41页)

6 加强考试,精心命题,严格考试纪律

我们认为电路分析课程的考试应坚持统一命题,统一评分标准,流水作业,保证对每一个考生公平。应引进了国家级的大型试题库,使考试命题更加规范、简便,考题更便于严格保密,这样就从根本上杜绝漏题的可能,使热衷于探题、套题的学生打消套题的念头,老老实实地进行考前复习,同时也保护任课老师免受不正之风的干扰。考试中,我们加强了考场巡视,力争将违纪和作弊降为零。近几年来,电路原理课程的考试杜绝了作弊。

综上所述,教育和教学质量的提高是一项系统工程,所以电路分析课程必须通过多种教育技术结合和教学手段的改革,引入先进的计算机辅助教学软件和多媒体技术提高教学效率,才能培养出适应高科技发展所需要的德才兼备的跨世纪人才。

参考文献

1 吴季松.知识经济的由来、内涵及我国的对策(J).体制改革,1998,(6).人大复印资料

2 柯合.美国:科教兴国人先行(N).中国经济导报,1998-11-06.

3 燕山.我国处于知识经济的萌芽阶段(N).中国信息报,1998-11-25

2 结束语

通过此设计,可以看到在功能上,单片机与大规模可编程逻辑器件有很强的互补性。单片机具有性能价格比高、功能灵活、易于人机对话、良好的数据处理能力特点;FPGA则具有高速、高可靠以及开发便捷、规范等优点。以此两类器件相结合的电路结构应在许多高性能仪器仪表和电子产品中将被广泛应用。

参考文献

1 徐志军,徐志辉.CPLD/EPGA的开发与应用.北京:电子工业出版社,2002

2 李景华,杜玉远.可编程逻辑器件及EDA技术.沈阳:东北大学出版社,2000

3 李华.MCS-51系列单片机接口技术.北京:北京航天航空大学出版社,1993

53

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

Copyright © 2019- yrrf.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务