博客
关于我
Primace 5.0软件与KEIL单片机软件联合在线仿真步骤
阅读量:797 次
发布时间:2023-03-04

本文共 5606 字,大约阅读时间需要 18 分钟。

Primace 软件是CME(京微雅格)公司的FPGA芯片开发专用软件。CME 的FPGA,如M5、M7等内嵌有8051 核心,因此可以与MCU联合在线仿真。虽然FPGA内部的程序不可控,无法一步步仿真,但由于MCU程序是可控的,因此可以利用MCU对FPGA发送命令,进而控制FPGA的运行与操作。因此,这一FPGA开发板也可以充当8051单片机开发板。

本文将介绍FPGA与keil联合仿真的相关设置,主要以简单的仿真案例为例。

安装8051驱动

在京微雅格官网上可以下载8051的专用驱动程序。安装完成后,在keil软件界面下拉菜单中可以找到对应的选项,选择后即可开始配置项目。

工程配置

  • 打开keil软件,创建新工程。
  • 在工程配置中添加必要的头文件和库文件。例如,添加M5.h驱动文件。
  • 在优化级别设置中,建议将优化级别设置为低级别,以便keil软件能够更好地支持单步执行功能。
  • 项目设置

    • 在keil中选择相应的开发板型和CPU模型。
    • 连接USB下载器,进行硬件调试。

    M5.h驱动文件

    M5.h是M5系列FPGA开发板的8051驱动文件,包含所有相关寄存器的定义。文件内容如下:

    #ifndef __M5_H__#define __M5_H__/* Byte Register */sfr P0 = 0x80;    // Port 0sfr P1 = 0x90;    // Port 1sfr P2 = 0xA0;    // Port 2sfr P3 = 0xB0;    // Port 3sfr PSW = 0xD0;    // Program Status Wordsfr ACC = 0xE0;    // Accumulatorsfr B = 0xF0;     // B Registersfr SP = 0x81;    // Stack Pointersfr DPL = 0x82;    // Data Pointer Lowsfr DPH = 0x83;    // Data Pointer Highsfr DPL1 = 0x84;   // Data Pointer 1 Lowsfr DPH1 = 0x85;   // Data Pointer 1 Highsfr WDTREL = 0x86; // Watchdog Timer Reloadsfr PCON = 0x87;   // Power Controlsfr TCON = 0x88;   // Timer/Counter Controlsfr TMOD = 0x89;   // Timer Modesfr TL0 = 0x8A;    // Timer 0 Lowsfr TL1 = 0x8B;    // Timer 1 Lowsfr TH0 = 0x8C;    // Timer 0 Highsfr TH1 = 0x8D;    // Timer 1 Highsfr CKCON = 0x8E;  // Clock Controlsfr DPSEL = 0x92;  // Data Pointer Selectsfr DPC = 0x93;    // Data Pointer Controlsfr PAGESEL = 0x94; // Program Memory Page Selectsfr D_PAGESEL = 0x95; // External Data Memory Page Selectsfr S0CON = 0x98;  // Serial Port 0 Controlsfr S0BUF = 0x99;  // Serial Port 0 Data Buffersfr IEN2 = 0x9A;    // Interrupt Enable 2sfr S1CON = 0x9B;   // Serial Port 1 Controlsfr S1BUF = 0x9C;   // Serial Port 1 Data Buffersfr S1RELL = 0x9D;  // Serial Port 1 Reload Lowsfr DMAS0 = 0xA1;   // DMA Source Address 0sfr DMAS1 = 0xA2;   // DMA Source Address 1sfr DMAS2 = 0xA3;   // DMA Source Address 2sfr DMAT0 = 0xA4;   // DMA Target Address 0sfr DMAT1 = 0xA5;   // DMA Target Address 1sfr DMAT2 = 0xA6;   // DMA Target Address 2sfr IEN0 = 0xA8;     // Interrupt Enable 0sfr IP0 = 0xA9;     // Interrupt Priority 0sfr S0RELL = 0xAA;  // Serial Port 0 Reload Lowsfr I2CSPISEL = 0xAB; // I2C Source Selectsfr ISCDATA0 = 0xAC; // I2C Configuration Data 0sfr ISCDATA1 = 0xAD; // I2C Configuration Data 1sfr ISCDATA2 = 0xAE; // I2C Configuration Data 2sfr ISCDATA3 = 0xAF; // I2C Configuration Data 3sfr DMAC0 = 0xB1;    // DMA Byte Counter 0sfr DMAC1 = 0xB2;    // DMA Byte Counter 1sfr DMAC2 = 0xB3;    // DMA Byte Counter 2sfr DMASEL = 0xB4;   // DMA Channel Selectsfr DMAM0 = 0xB5;    // DMA Mode 0sfr DMAM1 = 0xB6;    // DMA Mode 1sfr IEN1 = 0xB8;     // Interrupt Enable 1sfr IP1 = 0xB9;     // Interrupt Priority 1sfr S0RELH = 0xBA;   // Serial Port 0 Reload Highsfr S1RELH = 0xBB;   // Serial Port 1 Reload Highsfr IRCON2 = 0xBF;   // Interrupt Request Control 2sfr IRCON = 0xC0;    // Interrupt Request Controlsfr CCEN = 0xC1;     // Compare/Capture Enablesfr CCL1 = 0xC2;     // Compare/Capture 1 Lowsfr CCH1 = 0xC3;     // Compare/Capture 1 Highsfr CCL2 = 0xC4;     // Compare/Capture 2 Lowsfr CCH2 = 0xC5;     // Compare/Capture 2 Highsfr CCL3 = 0xC6;     // Compare/Capture 3 Lowsfr CCH3 = 0xC7;     // Compare/Capture 3 Highsfr T2CON = 0xC8;   // Timer 2 Controlsfr CRCL = 0xCA;    // Compare/Reload/Capture Lowsfr CRCH = 0xCB;     // Compare/Reload/Capture Highsfr TL2 = 0xCC;     // Timer 2 Lowsfr TH2 = 0xCD;     // Timer 2 Highsfr IEN4 = 0xD1;     // Interrupt Enable 4sfr ADCON = 0xD8;    // Serial Port 0 Baud Ratesfr I2CDAT = 0xDA;   // I2C Datasfr I2CADR = 0xDB;   // I2C Addresssfr I2CCON = 0xDC;   // I2C Controlsfr I2CSTA = 0xDD;   // I2C Statussfr SPSTA = 0xE1;    // Serial Peripheral Statussfr SPCON = 0xE2;    // Serial Peripheral Controlsfr SPDAT = 0xE3;    // Serial Peripheral Datasfr SPSSN = 0xE4;    // Serial Peripheral Slave Selectsfr RTCCMD = 0xE5;   // RTC Commandsfr RTCSEL = 0xE6;   // RTC Selectsfr RTCDATA = 0xE7;   // RTC Datasfr MD0 = 0xE9;      // Multiplication/Division 0sfr MD1 = 0xEA;      // Multiplication/Division 1sfr MD2 = 0xEB;      // Multiplication/Division 2sfr MD3 = 0xEC;      // Multiplication/Division 3sfr MD4 = 0xED;      // Multiplication/Division 4sfr MD5 = 0xEE;      // Multiplication/Division 5sfr ARCON = 0xEF;    // Arithmetic Controlsfr ISCCMD = 0xF2;   // In System Configuration Commandsfr ISCHEADER0 = 0xF3; // In System Configuration Header 0sfr ISCHEADER1 = 0xF4; // In System Configuration Header 1sfr ISCHEADER2 = 0xF5; // In System Configuration Header 2sfr ISCHEADER3 = 0xF6; // In System Configuration Header 3sfr SRST = 0xF7;     // Software Resetsfr GCLKCMD = 0xF8;   // Global Clock Commandsfr GCLKADDR = 0xF9;  // Global Clock Addresssfr GCLKDATA = 0xFA;  // Global Clock Datasfr ISMDIRCTRL = 0xFB; // In System Management Control#endif

    mcu头文件

    #include "M5.H"#include 
    #include
    #define uchar unsigned char#define uint unsigned int#define ulong unsigned longsbit GPIO_RST_N = P1^0;sbit GPIO_wr_en = P1^1;sbit GPIO_rd_en = P1^2;sbit GPIO_SRAM_CS = P1^3;sbit GPIO_dir = P1^4;#define GPIO_addr_L P0#define GPIO_data_H P2#define GPIO_data_L P3#define RST_EN GPIO_RST_N = 0#define RST_DISEN GPIO_RST_N = 1#define WR_EN GPIO_wr_en = 0#define WR_DISEN GPIO_wr_en = 1#define RD_EN GPIO_rd_en = 0#define RD_DISEN GPIO_rd_en = 1#define CS_EN GPIO_SRAM_CS = 0#define CS_DISEN GPIO_SRAM_CS = 1#define DATA_OUT GPIO_dir = 1#define DATA_IN GPIO_dir = 0

    仿真流程

  • 确保已安装USB下载器。
  • 在keil中选择正确的开发板和CPU模型。
  • 使用M5.h和mcu头文件配置项目。
  • 在优化级别设置中将优化级别调至低级别。
  • 在硬件调试阶段,通过USB下载器将FPGA程序下载至芯片。
  • 通过以上步骤,可以实现FPGA与MCU的联合仿真,利用MCU对FPGA的控制,完成复杂的FPGA程序开发和测试。

    转载地址:http://emxfk.baihongyu.com/

    你可能感兴趣的文章
    SpringBoot中集成SpringBatch详细解析与实战示例(CSV文件读取十万条数据进行业务处理后写入Mysql数据库)
    查看>>
    powerbi 一张表在另外一张表中出现的数量_PowerBi之初步学习笔记
    查看>>
    QGIS怎样设置简体中文以及新建可编辑的多边形的图层
    查看>>
    PowerBuilder 使用自定义事件触发键盘Enter事件
    查看>>
    PowerCreatorCMS UploadResourcePic 任意文件上传漏洞复现
    查看>>
    PowerDesigner 使用的一些技巧(转)
    查看>>
    QGIS在Windows上下载安装与建立空间数据库连接
    查看>>
    PowerDesigner165安装婆姐汉花教程
    查看>>
    PowerDesigner使用教程:设置注释、默认值属性
    查看>>
    PowerDesigner使用教程:不显示背景网格
    查看>>
    PowerDesigner使用教程:创建数据模型以及导出
    查看>>
    PowerDesigner使用教程:右侧工具栏显示/隐藏
    查看>>
    PowerDesigner使用教程:导出sql文件以及解决中文乱码问题
    查看>>
    PowerDesigner使用教程:时间字段设置
    查看>>
    PowerDesigner使用教程:给字段添加唯一约束
    查看>>
    QGIS中怎样设置图层样式并导出地图样式
    查看>>
    PowerDesigner使用笔记
    查看>>
    QGIS中怎样实现数据坐标系转换
    查看>>
    PowerDesigner学习--基本步骤
    查看>>
    PowerDesigner导出Report通用报表
    查看>>