FPGA单片机带你领略如何实现多机串行通信网络

时间:2022-03-17来源:佚名

采用FPGA器件可以大大缩短开发周期,减少资金投入,实现片上可编程系统(SOPC)的设计。同时,测控系统中使用串行扩展通信的趋势越来越突出,但是传统总线拓扑结构较低的响应效率已经不能满足复杂系统的要求。本文的主要目的是基于FPGA设计一个集成16个简单UART(通用异步接收发送设备)的模块,该模块采用VHDL语言描述。主单片机通过并口与FPGA相连,FPGA通过16个UART分别与16个从单片机相连,实现单片机串行通信网络系统。

1 系统硬件总体设计

系统设计要求主单片机能同时控制从单片机,并且能同时采集从单片机上传的信息,进行判断并传送给上位机。主单片机功能主要有:

① 与上位机通信,接收上位机命令并解析;

② 根据上位机命令,向下控制从单片机;

③ 监测从单片机中上传的各种指标是否符合要求;

④ 提供告警显示。

FPGA完成主单片机命令的解复接和从单片机上传信息的复接。从单片机主要功能为接收主单片机通过FPGA下发的命令,完成对设备的控制并上传设备状态,如图1所示。

图1 单片机多机通信原理示意图

本设计中使用的单片机为Cygnal公司的C8051F系列单片机,FPGA为Xilinx公司的XC3S100E。C8051F系列单片机是Cygnal公司开发的高端单片机,指令与8051兼容,最高具有25 MIPS的处理能力,同时集成了ADC、DAC、可编程放大器、电压比较器、传感器等丰富的外设,非常适合应用于测控领域。C8051F系列单片机还具有JTAG接口,方便用户在线调试,极大节省了用户的开发时间。

2 系统实现

2.1 主单片机单元设计

主单片机采用C8051F020单片机,该单片机提供2个串口、1个I2C接口(SMBus),提供P0~P3或P4~P7的并口。本设计中,设置特殊功能寄存器EMI0CF=0x27,使外部存储器接口工作在地址/数据复用方式,选择高端口P4~P7。设置特殊功能寄存器XBR0=0x15,将串口UART0和SMBus映射到P0端口。

C8051F020将FPGA视为外部存储器,通过并口P4~P7进行访问。C8051F020通过SMBus接口连接串行EEPROM,将系统信息实时写入EEPROM,在系统突然掉电后上电时读取EEPROM内的数据,完成系统掉电保护功能。主单片机连续不停地分析从单片机上传的指令,判断设备的状态并给出告警显示,同时存入内部缓冲区等待上位机查询。

C8051F020提供串口和网口2种方式与上位机通信,两个接口不能同时使用。网络通信采用网口串口转换模块实现,网口和串口通过组合逻辑电路连接到C8051F020的UART0,如图2所示,实现系统的本地监控和远程监控功能。

图2 主单片机串口和网口连接示意图

2.2 FPGA单元设计

FPGA的设计是通信网络的核心部分。依据功能要求,FPGA内部划分成四大功能模块:SRAM控制器、发送数据缓冲模块、16个UART模块、接收数据缓冲模块。发送数据缓冲模块划分成16个RAM区,每个RAM区分别连接1个UART,当发送缓冲模块接收到主单片机下发的控制数据后,启动UART将数据发送至从单片机。接收缓冲区同样分为16个RAM区,发送控制数据后,UART周期性地向从单片机发送状态查询命令,从单片机将最新状态发送至UART模块,UART模块将数据存入接收缓冲模块相应的RAM区。如图3所示。

图3 FPGA内部功能模块示意图

FPGA内部共有16对读/写和数据总线,分别连接UART和相应的发送缓冲区RAM及接收缓冲区RAM。

FPGA内部模块采用自顶向下的设计方法,将复杂系统划分为简单系统,然后通过逻辑和接口设计实现各个模块功能。SRAM控制器用于FPGA和C8051F020的接口,负责内部RAM的读写控制。UART负责接收从单片机上传的串行信号,将其并行化后存入接收数据缓冲RAM;另外也负责将发送缓冲RAM中的数据转换成符合RS232协议规范的串行信号发送给从单片机。SRAM控制器和UART模块同样采用自顶向下的方式实现,关于SRAM控制器及UART的FPGA实现方案在参考文献中有详细的论述[56],本文不再介绍。

FPGA内部系统采用同步有限状态机(FSM)的设计方法实现,FSM负责调配各功能模块之间的协作。状态机采用独热(onehot)编码,使电路的可靠性和速度有显著的提高。系统状态转移图如图4所示。

图4 有限状态机状态转移图

2.3 通信协议设计

主单片机和上位机的通信速率及FPGA和从单片机的通信速率均设置为38.4 Kbps,可以更精确的控制主单片机与各个从单片机之间的通信时间。通信指令由报头、设备类型、设备号、命令号、命令数据、校验等字段组成。报头用于通知单片机开始串行通信,设备类型和设备号用于将指令正确传达到相应的设备,命令号用于通知单片机指令,命令数据用于通知单片机具体的功能,校验则采用CRC校验以保证通信的准确性。写入控制命令号为00H,读取命令号为01H,读取指令命令数据为0字节。通信指令的帧格式如下:

结语

本文介绍了在FPGA上集成多个UART的方法,并以此为基础搭建了一个多单片机通信网络。设计中采用FPGA作为串行接口扩展器件与传统器件相比具有功能灵活、扩展性好的特点。通过实验证明,该通信网络相对于传统的总线拓扑网络具有速度快、实时性好的特点,同时该网络可以根据外设需要随意扩展,非常适合应用于监督计算机控制系统和集散控制网络。

    相关阅读

    城市亮化工程如何设计才能具有层次感?

    城市亮化工程 的主要目地是为夜间带来一体化照明,考虑基础的视觉识别规定,自然环境照明的光层级与光线总数的多少相关,假如空间中的自然环境照明比工作照明低许多 ,在工作...
    2022-10-11
    城市亮化工程如何设计才能具有层次感?

    城市道路照明工程主要有哪些?

    在城市建设中,道路照明 是必不可少的基础设施,也是城市夜景的重要组成部分。在某种程度上,它还反映了城市的经济实力,社会进步和现代化的标志。它为夜间在城市中的车辆和行...
    2022-07-12
    城市道路照明工程主要有哪些?

    安全出口指示标志灯为什么是绿色而不是红色?

    对于安全出口指示标志灯相信大家都不陌生,我们在日常生活中在任何公众场所的紧急疏散的安全出口都可以看到这个安全出口指示标志灯,大家有没有想过安全出口的指示标志为什么...
    2022-05-21
    安全出口指示标志灯为什么是绿色而不是红色?

    路灯照明合理的布置方式

    路灯的布置方式主要有单侧布置、双侧交错布置、双侧对称布置、中心对称布置、横向悬索布置五种形式,随着城市道路的不断拓宽,平交路口转弯半径越来越大,根据《城市道路亮化...
    2022-07-15

    泛光照明工程是什么?应用范围有哪些?

    很多人提及 泛光照明工程 会有一些生疏,不理解泛光照明包含哪些,也不知道 泛光照明工程 跟普通照明工程有哪些不一样。 实际上泛光照明工程便是归属于城市景观照明工程或环境...
    2022-10-17
    泛光照明工程是什么?应用范围有哪些?

    消防应急灯的寿命有多长?一般可以使用多长时间?

    对于消防应急灯的使用寿命相信很多人都想了解这个问题,因为消防应急灯安装了就不需要时时刻刻盯着,这需要定时检查就可以了,但是很多人都不知道消防应急灯的寿命有多长,不...
    2022-05-21
    消防应急灯的寿命有多长?一般可以使用多长时间?

    快投派智能无线投屏器,让无线互联更加简单便捷

    没有WiFi的情况下可以进行无线投屏吗? 长期使用投屏功能的人,或多或少都知道自己的手机可以通过【无线投屏】【屏幕镜像】功能,直接连接到智能电视或无线投屏器,下意识地认...
    2022-05-11
    快投派智能无线投屏器,让无线互联更加简单便捷

    广场照明的设计技巧

    广场照明设计 主要包括休闲广场、集会活动广场、商业广场的照明设计。 1)休闲广场。主要是为人们提供休息、社交和举行小型文化娱乐活动的地方,由于人们活动方式不同,有些区...
    2022-07-15

    网站栏目