采用单片机和FPGA设计的延时调节模块

发布者:心愿实现最新更新时间:2018-04-07 来源: eefocus关键字:单片机  FPGA  延时调节模块 手机看文章 扫描二维码
随时随地手机看文章

    系统结构框图如图1。其硬件结构比较简单,主要由单片机P89C51RD、RS-232/TTL接口电路MAX232和可编程逻辑器件FPGA三部分组成。单片机P89C51RD2是上位PC机和FPGA的连接纽带,它通过并口发送数据给FPGA,另一边通过RS-232/TTL接口芯片与PC机进行串行通讯;PC机主要功能是实现延时调整的可视化操作;FPGA是延时调整处理的硬件实现,单片机将PC送过来的延时调整参数输入FPGA,FPGA在单片机的控制下对信号进行延迟处理,最后送入相应传输通道。某些系统使用现场存在较强的电磁干扰,模块的设计考虑信号隔离问题,故对串行接口进行了电气隔离,强化了PC机和模块通讯的安全系数。



11

    延时模块正常上电后,单片机P89C51RD2首先从数据存储区读出最近一次存储的延迟时间、信号通道等参数,并转发到FPGA数据接口。FPGA根据接收到的参数,首先筛选出目标地址以便切换到对应的信号通道,然后再根据时间对该通道进行预定的延时,恢复先前调整好的延时信号。在模块运行期间,P89C51RD2实时监测、接收来自上位PC机发送的新延时数据。如果需要对某一路信号的延时量进行调节,通过PC机的串口发新数据,P89C51RD2中断收到新数据后,将数据分成两路处理:一路进入到单片机的数据存储区,待下次上电读取使用;另一路则转发至由FPGA控制的延时控制,实现信号的延迟时间调整。

    块使用的P89C51RD2是PHILIPS公司内核基于8 位80C51单片机的派生产品,它们在完全保留80C51 指令系统和硬件结构的大框架外,还具有多方面的功能加强、扩展、翻新和创新,其中在应用中编程(IAP:In-ApplICation Programming)是最显着特点之一。在应用中可编程是指MCU可以在系统中获取新代码并对自己重新编程,即用程序来改变程序。P89C51RD2的IAP功能实现是通过PHILIPS 公司提供的BootROM 固件来完成的,它位于0FC00H?0FFFFH空间,与闪存空间重叠(见图2)。固件中已经固化有擦除和编程等子程序,PHILIPS 公司提供了寻址该固件的方法,只要用户程序简单调用BootROM中带适当参数的公共入口,即可实现所需要的操作。

   

55

    P89C51RD2闪存结构见图2,它具有如下特点:

    1. 其闪存空间是分块的64kB的闪存空间,共分5块,由低到高分别为8kB(BLOCK0)、8kB(BLOCK1)、16kB(BLOCK2)、16kB(BLOCK3)以及16kB( BLOCK4);

    2. 每一块都可以单独擦除;

    3. 在程序中可以调用IAP功能对闪存中的每一字节进行单独编程。

    正是由于上述三个特点,在不外扩展存储器情况下,将程序空间剩余下的闪存空间作为数据空间,把单片机接收中断采集到的信号通道、延迟时间等参数存储下来,实现掉电数据保存。

    软件设计

    整个延时模块的软件包括了PC机发送参数程序,单片机接收并存储参数程序和FPGA信号延时处理程序。

    PC机发送参数程序是用户将PC机的串口与模块连接,通过PC机的发送程序界面,很容易对信号进行延时调整。发送程序采用VC作为编程语言,调用串口控件,设计方便且界面简洁,界面如图3所示。发送的每个数据帧8位,包括延迟时间和信号通道两个参数,其中高三位是要调整的信号通道,后五位表示延迟的时间。发送程序中,对界面中的“+”或“?”进行一次操作,PC就通过串口向单片机连续发送8路信号延时参数,即只要调节了任一路信号的延时,PC机就会连续发送8个数据帧。

4

     单片机软件设计

    单片机主要完成与PC之间的通信,数据的存储和上电数据的读取。程序采用C51编写,编译采用当前编译效率最高的C51编译器KEIL。软件流程图见图4。


797

    在P89C51RD2的64k闪存空间中,地址为0000H-7FFFH的32kB闪存空间作为程序空间,整个单片机程序编译后为15k,所以32k的程序空间足够大。余下的8000H?FFFFH的32kB 闪存空间留作数据存储空间。两块数据存储空间轮流使用,当数据量存满其中一块时通过程序跳转到另一块,在使用前先将该块擦除


    各函数介绍如下:

    main()——主程序;

    InitUART(void)——串口初始化;

    IaPINit(void)——IAP功能初始化,使用IAP功能前必调用;

    PowerOnRead(void)——上电读取最近一次存储的参数。模块对上电时间要求不苛刻,最新数据的地址可通过查表方式寻找。每一个数据帧占一个数据存储空间,由于单片机每次中断都接收到8个数据帧,所以将每8个数据存储空间划分成一组,这样只要查询每组的头一个地址就能快捷地完成查询,大大节省了查询时间。

    EraseBLOCk (uint AddreSSRestore)——判断当前数据存储空间块满,并擦除;

    RestorEDAta(void)——数据存储在数据存储空间;

    FPGADataUp(uchar DataRec)——更新FPGA接口数据。

    在程序中,要多次调用BootROM固件中的子程序。由于IAP子程序接口是汇编语言,为了编写方便,同时使程序框架明了,编写了一个IAPLIB.A51汇编语言接口函数库和IAPLIB.H头文件。在程序中加上IAP.H头文件,调用固件程序时就不需在C51程序中嵌入汇编,而是像调用C语言函数一样简单,这大大简化了编程。

    FPGA设计

    FPGA主要设计了DECODE延时通道译码器、CS片选信号控制器、N阶SHIFTER移位寄存器。其中译码器用于完成对单片机并口送来的数据进行通道、时间参数的分离,用通道参数进行寻址和译码,这是一种简单的译码逻辑和触发电路。N阶移位寄存器用于完成对信号进行N阶的延时处理,是延时处理的核心单元。 延时通道译码器将单片机并口送来的延时参数送入锁存器,同时输出控制电路将移位寄存器对应的延时阶切换到输出端。从不同的阶引出信号即可获得不同的延时量。控制时钟和移位寄存器的阶数决定了延时步进调节精度和延时调节范围。如果定时模块有N个信号通道,每个定时模块集成N个完全相同的延时调节单元,就可实现独立调节各个通道信号延时大小的功能。集成的延时调节单元越多,占用可编程芯片的资源就越多,这可以根据实际需要选择可编程逻辑器件。

    FPAG软件的设计采用“自顶向下”、“软硬兼施”的设计方法,主要的各单元设计采用VHDL语言描述完成,而整个多路信号的延时功能处理采用图形输入设计方法。软件设计完成后,根据电路原理图进行引脚锁定,然后启动编译程序来编译项目。编译器将进行错误检查、网表提取、逻辑综合和器件适配,然后进行行为仿真、功能仿真和时序仿真。最后通过编程器方式将POF文件下载到EPROM中。加电后,FPGA将EPROM中数据读入片内编程RAM中,完成配置,从而生成硬件电路。

    模块功能调试实现

    模块在调试中出现P89C51RD2有时上电程序运行不正常,读取程序空间是空的。但是只要上电工作起来,就恢复正常。怀疑由于上电复位时序混乱,造成误调用固件擦除芯片子程序。采用专用复位芯片替换电容电阻加二极管的复位电路,使问题得到了解决。同样,在单片机正确送数情况下,FPGA上电出现不能正常恢复预设好的延时信号,信号总是零延迟(第一次上电,单片机数据存储空间内没有数据,信号就处于零延时状态),但在工作状态下,能够很好地实现延时调节。怀疑这种情况是因存在复位问题而导致,但专用复位芯片不能解决问题。经多次检查程序,发现硬件语言程序中触发语句是电平触发,改写为脉冲上升触发后问题得以解决。

    结束语

    采用单片机和FPGA设计的延时调节模块,硬件结构简单,设计集成度高。软件方面,单片机程序将C语言和汇编语言很好地结合,FPGA充分发挥了硬件语言易改变电路结构和算法的优越性。提高FPGA中移位寄存器的时钟频率,同时相应增加移位寄存器程序输出阶数,可实现更高精度的延时步进调节和增大延时调节范围。因此可以在不改变模块硬件结构基础的上,通过软件升级来提高模块的性能,从而扩大模块的应用领域。


关键字:单片机  FPGA  延时调节模块 引用地址:采用单片机和FPGA设计的延时调节模块

上一篇:基于AT89C51单片机的RS 232串行数据截取设计方案
下一篇:单片机实验开发板测试程序解析

推荐阅读最新更新时间:2024-03-16 15:59

基于GPRS和单片机的彩信报警系统设计方案
  国内传统的电子防盗报警系统方案往往是在用户端通过电子设备检测到盗窃等报警信息, 然后通过通讯器经电话线将信号自动传到报警中心来完成报警过程。这种报警中心往往存在很多局限。例如:报警中心地点和人员需固定,报警通信速度慢,反向查询、控制等操作困难而专业,电话线断线问题难以解决,通信费用、尤其是远程通信费用较高,不利于组建远程网络,通信带宽太小,加载信息量少,音视频信号的技术手段应用困难, 很难应用于家庭安防市场等等。   而彩信业务自中国移动从2002 年9 月正式推出以来,随着彩信网络工程的建立和不断地优化,彩信逐渐进入了高速发展和稳定应用阶段。所以人们越来越关注于依托中国移动网络、基于彩信业务来发展现代的电子防盗报警系统,
[单片机]
基于GPRS和<font color='red'>单片机</font>的彩信报警系统设计方案
如何利用单片机向电脑发送一串汉字
最近看到有朋友在网上问单片机怎么向电脑发送一串汉字这个问题,其实这个问题也不难。呵呵。只要把相关的参数设置好一些,然后把汉字定义成一组字符向电脑发送就可以。 为了让大家更明确的了解,我就写了下面的一个程序来演示一下。 操作条件: 1.XP操作系统。 2.XP的超级终端显示。 3.WJ-V4.0开发板。 4.单片机STC89C52. 5.晶振11.0592M 操作步骤: 1.设置TMOD设置波特率和定时器1的工作方式。 2.设置定时器的初始值。 3.设置串行口工作方式。 4.设置波特率不加倍。 5.打开TR1允许发送。 6.启动定时器。 7.串行中断打开。 8.打开EA中断。 现在发上源代码: #include #defin
[单片机]
如何利用<font color='red'>单片机</font>向电脑发送一串汉字
单片机中ROM、RAM、Flash的区别
常规上ROM是用来存储固化程序的,RAM是用来存放数据的。由于FLASH ROM比普通的ROM读写速度快,擦写方便,一般用来存储用户程序和需要永久保存的数据。譬如说,现在家用的电子式电度表,它的内核是一款单片机,该单片机的程序就是存放在ROM里的。电度表在工作过程中,是要运算数据的,要采集电压和电流,并根据电压和电流计算出电度来。电压和电流时一个适时的数据,用户不关心,它只是用来计算电度用,计算完后该次采集的数据就用完了,然后再采集下一次,因此这些值就没必要永久存储,就把它放在RAM里边。然而计算完的电度,是需要永久保存的,单片机会定时或者在停电的瞬间将电度数存入到FLASH里。 --ROM存放指令代码和一些固定数值,程序运行后不
[单片机]
全面了解面向电动车牵引逆变器的S32K39 MCU
目前电动汽车市场发展迅猛,对提高电动汽车性能的需求也随之增加了。设计人员和汽车制造商需要加快产品上市速度,同时优先考虑如何提高效率和终端用户体验。另外,还要寻找合适的解决方案,开发包括电动汽车牵引逆变器在内的广泛应用,而这无疑是一个挑战。 恩智浦S32K39 MCU是我们S32K系列的新成员 ,将提供优势解上述燃眉之急。 为什么S32K39 MCU适用于电气化 为了保证电动汽车的高性能,需要考虑很多因素,包括电池管理、高效电机驱动、快速充电和整个电网的负载平衡等。恩智浦广泛的电气化解决方案一直在整个生态系统中提供高效的控制,S32K39也不例外。 S32K39 MCU系列专为满足电动汽车牵引逆变器控制需求而创建
[电源管理]
全面了解面向电动车牵引逆变器的S32K39 <font color='red'>MCU</font>
瑞萨电子推出32位RX671 MCU,实现高性能和高能效
瑞萨电子推出32位RX671 MCU,实现高性能和高能效,可支持非接触式HMI功能 具备大容量内存和超紧凑封装的单芯片解决方案,满足广泛的需求 2021 年 9 月 8 日,日本东京讯 - 全球半导体解决方案供应商瑞萨电子集团(TSE:6723)今日宣布,推出32位微控制器(MCU)RX671,为广受欢迎的RX产品家族增添一款全新高性能、多功能,且具备触摸感应和语音识别等非接触式操作方式的单芯片解决方案。作为瑞萨广受欢迎的主流RX600系列的一部分,RX671 MCU基于RXv3 CPU核构建,运行速度为120MHz,集成闪存支持60MHz的快速读取访问,实现卓越实时性能,CoreMark评分达707;电源效率为48.8
[单片机]
瑞萨电子推出32位RX671 <font color='red'>MCU</font>,实现高性能和高能效
基于Verilog的多路相干DDS信号源设计
实现信号源的多路同步输出且各路间拥有固定的相位关系,在雷达、通信等多领域有着重要的应用。为了实现此功能,大多数设计是利用单片机控制多个专用DDS芯片,实现多信号同步输出,如图1所示。但腱由于采用分立的专用DDS芯片,各芯片参数很难做到完全相同,参数的差异会造成输出信号频率和相位不同。因此,尽管各DDS芯片采用同一频率字,各个输出信号频率也难以完全相同。同样,由于参数的不一致,波形之间的相位也难以做到同步准确可调,更重要的是各个信号通道间频率差异的累积效应可能会导致同步失败。由于这些原因,要实现多路同步输出且各路信号间成相干关系必须采用另外的系统。本文给出了一种基于FPGA的3路相干信号源设计方案。 1 DDS基本原理 DD
[单片机]
基于Verilog的多路相干DDS信号源设计
51单片机的状态机消抖代码
#include enum State {Init, Press, Free}; //定义按键状态的枚举类型 enum State Key_State; //按键状态 sbit Key1 = P2^4; sbit Key2 = P2^5; sbit Key3 = P2^6; sbit Key4 = P2^7; void Delay_ms(unsigned int x) { int i,j; for(i=0; i 110; i++) for(j=0; j ; } //============================================================================
[单片机]
单片机存储器一些相关知识的学习
接着上一期内容我们继续来认识一下单片机存储器,学习一些相关知识。 片内的ROM和片外的ROM有两种组合方案,第一个方案是51单片机内部的ROM一共有4K,4K是它的存储容量,它的存储空间分布地址分布式从0000H到0FFFH,大家要理解什么叫做存储容量,什么叫做地址分布,比如说一个空间里面可以容纳4085个人,这4085个人指这个空间的容量是4085个人,把十进制的4085转换成这个二进制转换成二进制的这种方式称之为4K,也就是按照二进制进行编码,一共会占到12个1,就是2的平方乘以2的10次方,这样的话它的地址空间就是从0000H到0FFFH,也就相当于是这个空间一共是4096个座位,每个座位上可以做一个8位的二进制数,这个座位
[单片机]
<font color='red'>单片机</font>存储器一些相关知识的学习
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

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