FPGA|CPLD|ASICwilliam hill官网
直播中

梅雪松

12年用户 1236经验值
擅长:可编程逻辑 嵌入式技术 EDA/IC设计 控制/MCU
私信 关注
[经验]

【Artix-7 50T FPGA试用体验】基于7A50T FPGA开发套件的工业通信管理机设计(五)结项

【Artix-7 50T FPGA试用体验】基于7A50T FPGA开发套件的工业通信管理机设计(一)

【Artix-7 50T FPGA试用体验】基于7A50T FPGA开发套件的工业通信管理机设计(二)


【Artix-7 50T FPGA试用体验】基于7A50T FPGA开发套件的工业通信管理机设计(三)AXI接口


【Artix-7 50T FPGA试用体验】基于7A50T FPGA开发套件的工业通信管理机设计(四)自定义IP封装

接上贴
Microblaze系统搭建
然后使用本自定义IP创建基于MicroBlaze的片上系统,前期为了调试方便,因此只添加了4个本IP。主要是手头最多能找到4个USB转串口的模块,能够与PC机连接,使用MODBUS SLAVE软件进行模拟设备调试。
ssssssssssssssss.jpg

MicroBlaze程序设计关键数据结构
要想对通信管理机上的众多外设如16个自定义IP进行合理有序的管理,并保证数据流的正确传递,系统的数据结构设计必须巧妙。以下为针对本项目设计的串口的数据结构体:
  
typedef struct {
  
    uint8_t cmd_sum; //命令总数
  
    uint8_t cmd_index; //当前命令号
  
    uint8_t resend_sum; //重发次数
  
    uint8_t resend_index; //当前重发次数
  
} SLAVE_STRUCT_TYPEDEF;
  
  
typedef struct {
  
    uint32_t uart_base;
  
    uint32_t uart_irq_ic_id;
  
    uint8_t uart_irq;
  
    uint16_t irq_mask;
  
    void *uart_irq_isr;
  
    uint32_t bps; //波特率
  
    uint32_t timeout_period; //接收超时时间
  
    uint16_t MDP_period_cnt;
  
    uint8_t MDP_period_cnt_en;
  
    uint8_t slave_index; //串口当前操作的设备编号
  
    uint8_t slave_sum; //串口所挂的设备总数
  
    uint8_t uart_rx_status; //串口收状态
  
    uint8_t uart_tx_status; //串口发状态
  
    uint8_t uart_tx_fifo_len; //串口发送fifo指针长度
  
    uint8_t uart_rx_fifo_len; //串口接收fifo指针长度
  
    uint8_t uart_rx_fifo_len_temp; //串口接收fifo指针长度缓存
  
    uint8_t uart_rx_fifo[256]; //接收fifo
  
    uint8_t uart_tx_fifo[256]; //发送fifo
  
    SLAVE_STRUCT_TYPEDEF slave[16];
  
} MDPORT_STRUCT_TYPEDEF;
  

使用时,用到多少个自定义串口外设,就使用该结构体类型定义多少个串口变量,然后,就可以通过结构体引用来直接调用相关元素了。在实际使用时,uart_rx_fifo和uart_tx_fifo两个256字节的fifo严重浪费内存空间,因此可以将其从结构体中剔除,直接定义为全局变量。
系统调试方案
后期调试是一个非常大的项目,为了方便调试,因此使用Modbus Slave软件模拟MODBUS从站,以让使用7A50T设计的通信管理机能够直接访问到有效数据。
ffffffffffffffffff.jpg
调试系统为一根网线连接PC,两个USB转串口通过HUB连接到PC,并和上位机Modbus Slave软件连接。
ccccccccccccccccc.jpg
预期效果
运行MicroBlaze处理器,将以1秒钟的速率持续通过两个串口访问PC机上模拟的Modbus Slave主机,并将读到的数据处理后存储起来,等到PC网络上位机发出总召命令,就将处理后的数据按照指定格式,使用IEC104协议上传到PC机后台,以实时显示。在后台软件上发出控制命令,数据将通过网络协议传给7A50T板卡,然后经过分析处理后,再将需求信息通过对应的串口发送到PC上模拟的设备,改写对应的数据内容。
总结
项目到此,不得不很遗憾的宣告失败,时间有限,对于我来说,之前从没接触过Xilinx的相关内容,以为凭着之前在Altera SOPC技术上的积累,能够快速上手Xilinx的MicroBlaze应用,但是目前来说,我还是图样图森破,也是因为没有真正全身心的投入到Vivado软件的学习和使用中,因此,最终的自定义IP封装都是在朋友的指导下才最终完成,在搭建MicroBlaze处理器系统时,纠结了好久,到现在为止,也有若干问题没解决,整个硬件项目依旧无法route通过,由于我现在是一个人创业,没有稳定的收入,因此也没办法再花太多的时间在这个不熟悉的技术上。所以,还是很感谢安富利、感谢电子发烧友william hill官网 ,感谢Cici。未能很好的完成此试用项目,我也很遗憾。

更多回帖

发帖
×
20
完善资料,
赚取积分