笔记:soc最小系统(软硬件协同仿真)--插桩&hello

这篇具有很好参考价值的文章主要介绍了笔记:soc最小系统(软硬件协同仿真)--插桩&hello。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

笔记:soc最小系统(软硬件协同仿真)–插桩&hello

0.环境配置:quartus2 15.0+Modelsim10.4+keil5
1.插桩
功能:在完成最小系统的设计后,简单测试数据是否能够写入寄存器,以及uart能否打印hello
实现:先在keil和quartus2分别设计好软硬件工程,再将keil产生的bin/hex文件读到最小系统的sram中,最后通过Modelsim仿真查看波形与打印字符。
1.1 soc最小系统架构连接解析
下图是一个soc系统的结构图,我们即将按照这个架构连接soc中各个模块。
笔记:soc最小系统(软硬件协同仿真)--插桩&hello
busmatrix 开启了三个端口(有3个slave),
笔记:soc最小系统(软硬件协同仿真)--插桩&hello
在下面的代码中,slave0连接了sram,笔记:soc最小系统(软硬件协同仿真)--插桩&hello
slave1连接了ahb2apb,
笔记:soc最小系统(软硬件协同仿真)--插桩&hello
apb连接上之后,开启apb的端口使能,apb有自己的slave,开启多选一选通器
笔记:soc最小系统(软硬件协同仿真)--插桩&hello
uart挂在apb上,
CM3DS_MPS2.h文件Peripheral memory map 外设存储器映射定义了各个部分不同的位置定义
这里UART地址=0x40000000UL(apb_base)+0x4000UL
笔记:soc最小系统(软硬件协同仿真)--插桩&hello
apb选通了psel4来挂。将各信号连接
笔记:soc最小系统(软硬件协同仿真)--插桩&hello

2.最小系统仿真流程与现象
软件部分:添加头文件 底层驱动 库函数 主函数等 。keil配置环境后构建系统
笔记:soc最小系统(软硬件协同仿真)--插桩&hello
不要在这里直接生成hex文件
笔记:soc最小系统(软硬件协同仿真)--插桩&hello
用仿真器模拟debug
笔记:soc最小系统(软硬件协同仿真)--插桩&hello
在此处配置即将写入数据的起始memory地址
笔记:soc最小系统(软硬件协同仿真)--插桩&hello
fromelf.exe --vhx --8x1 --output=.\output\outfile.hex .\hello.axf
在这里生成outfile.hex文件,之后在tcl的sram中写入

#include "CM3DS_MPS2.h"
#include <stdio.h>
#include "uart_stdout.h"

int main (void)
{
	uint32_t* addr;
	
	addr = ((uint32_t*) 0x00009000UL);
  *addr = 0x12345678;
	
	addr = ((uint32_t*) 0x0000a000UL);
  *addr = 0x87654321;
	
  // UART init
  UartStdOutInit();

  printf("Hello world\n");

  printf("** TEST PASSED **\n");

  // End simulation
  UartEndSimulation();

  return 0;
}

上图是keil主函数,他有两个功能,
a. 插桩:在地址为0x00009000UL的位置上写入0x12345678,
b. uart功能开启,打印hello word和test passed

在该模块memfile写入产生的hex数据 “软件”即可在“硬件”中运行。
笔记:soc最小系统(软硬件协同仿真)--插桩&hello
下图是定义在该模块下的仿真块,它的作用是通过位宽计算memory的大小,首先将寄存器内的数据都清零,然后将32位的软件数据分到4个8位的ram中(即实现一个memory读取的hex文件的操作)

`ifndef SIMULATION
  integer i;
  localparam MEM_SIZE = 2**(AW+2);
  reg [7:0] fileimage [0:((MEM_SIZE)-1)];

  initial begin
    //  Initialize memory content to avoid X value on bus
    for (i = 0; i <= AWT; i=i+1)
      begin
        BRAM0[i] = 8'h00;
        BRAM1[i] = 8'h00;
        BRAM2[i] = 8'h00;
        BRAM3[i] = 8'h00;
      end

`ifndef RAMPRELOAD_SPI
  // Simulation
  $readmemh(MEMFILE, fileimage);
      // Copy from single array to splitted array
    for (i=0;i<(MEM_SIZE/4); i= i+1)
    begin
      BRAM3[i] = fileimage[i*4+3];
      BRAM2[i] = fileimage[i*4+2];
      BRAM1[i] = fileimage[i*4+1];
      BRAM0[i] = fileimage[i*4];

    end
`endif // RAMPRELOAD_SPI
  end
`endif // SIMULATION

modulsim仿真可得log如下图片打印出uart print的数据
笔记:soc最小系统(软硬件协同仿真)--插桩&hello
图中UART0 TDX已经成功传输了内容
笔记:soc最小系统(软硬件协同仿真)--插桩&hello

笔记:soc最小系统(软硬件协同仿真)--插桩&hello
for循环里面的变量cnt你可以改为用integer定义,reg定义的好像不行,
尽量不要使用for语句,可以改为if语句,i,j的大小为if后的判定语句
//************************************************************************************
说明:
1 代码可到我主页免费下载
2 代码仅用于学习交流使用文章来源地址https://www.toymoban.com/news/detail-432025.html

到了这里,关于笔记:soc最小系统(软硬件协同仿真)--插桩&hello的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 24h无人棋牌室预约系统的软硬件开发

    最近接到一个24小时自助无人棋牌室,就是共享棋牌室的项目: 1. 开发一个小程序,客人通过小程序选择空闲的包间,选择预约时间后,线上支付费用; 2. 到店后通过小程序一键开启包间的电子门。 预约流程很简单,项目的核心在于,到店后判断当前客户的有效订单,并控

    2024年02月06日
    浏览(30)
  • 【Linux】操作系统与冯诺依曼体系——深度解析(软硬件层面)

    ​ 前言 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎! 本章主要内容面向接触过Linux的老铁,从软硬件层面向大家介绍操作系统与冯诺依曼体系, 主要内容含: 欢迎订阅 YY 滴Linux专栏!更多干货持续更新!以下是传送门! 订阅专栏阅读: YY 的《Linux》系列 ❀❀❀❀❀ 【

    2024年02月13日
    浏览(32)
  • 省钱兄共享娱乐室无人系统软硬件结合是怎样开发的

    随着科技的快速发展,共享经济模式逐渐渗透到各个领域。在娱乐室领域,省钱兄共享娱乐室无人系统软硬件结合的开发应运而生,旨在提供高效、安全、经济的娱乐室使用体验。本文将从需求分析、系统设计、软件开发和系统测试四个方面,详细介绍该系统的开发过程。

    2024年02月08日
    浏览(37)
  • 【Linux】从软硬件角度重新理解 [ 操作系统与冯诺依曼体系 ](8)

    ​ 前言 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎! 本章主要内容面向接触过Linux的老铁,从软硬件层面向大家介绍操作系统与冯诺依曼体系, 主要内容含: 欢迎订阅 YY 滴Linux专栏!更多干货持续更新!以下是传送门! 订阅专栏阅读: YY 的《Linux》系列 ❀❀❀❀❀ 【

    2024年02月08日
    浏览(29)
  • 【闪击Linux系列P8】从软硬件角度重新理解 [ 操作系统与冯诺依曼体系 ]

    ​ 前言 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎! 本章主要内容面向接触过Linux的老铁,从软硬件层面向大家介绍操作系统与冯诺依曼体系, 主要内容含: 欢迎订阅 YY 滴Linux专栏!更多干货持续更新!以下是传送门! 订阅专栏阅读: YY 的《Linux》系列 ❀❀❀❀❀ 【

    2024年02月13日
    浏览(26)
  • 【软硬件测试】测试经验:软硬件结合测试要点

    目录 一、应用行业 二、测试要点 三、硬件测试 (1)测试含义  (2)测试方法  (3)相关链接 四、结合测试 (1)测试含义  (2)测试工具 (3)硬件指标 (4)相关链接 软硬件结合测试是在软件和硬件之间进行测试和验证的过程,这种测试可以确保软件和硬件之间的交互

    2024年02月08日
    浏览(62)
  • 基于STC89C52单片机的温度控制系统设计方案与软硬件实现

    目录 摘要 I Abstract II 第一章 前言 1 1.1 温度控制系统设计发展历史及意义 1.2 温度控制系统的目的 1.3 温度控制系统完成的功能 第二章 总体设计方案 2.1 方案一 2.2 方案二 3.1 DS18B20简介 3.1.1DS18B20封装与引脚 3.1.2 DS18B20的简单性能 3.2 DS18B20的工作原理 3.3 DS18B20的测温原理 3.3.1 测

    2024年02月12日
    浏览(36)
  • 【源码独家】云快充协议,JAVA微服务实现,汽车、二轮充电桩系统源码软硬件自主研发商业解决方案!

    随着新能源汽车的普及,充电技术的创新愈发重要。我们公司引以为傲地推出​​的云快充协议,结合JAVA微服务实现,软硬件自主研发,为新能源充电领域带来全新的商业解决方案! 充电系统总体介绍 产品介绍 软件部分主要以充电后台运营端+小程序uniapp(用户+商户)组成

    2024年01月21日
    浏览(53)
  • 网络安全软硬件配置

    原则 1.成熟性和可靠性原则 2.易用性和可维护性原则 3.可扩展性原则 范围 系统网络安全软硬件配置范围应与系统建设范围保持一致。 主要包括安全设备名称,主要功能,能力需求等。 硬件设备 防火墙 :访问控制、安全域隔离,对协议、地址和服务端口进行访问控制。 入侵

    2023年04月09日
    浏览(32)
  • 【轮式平衡机器人】——软硬件配置/准备

    本系列以轮式平衡移动机器人为例,将使用 基于模型设计(MBD)方法 进行介绍,涉及基础硬件、软件、控制算法等多方面内容,结合 MATLAB/Simulink 的强大仿真能力和代码生成能力辅助设计!在此过程中可以系统了解开发全流程,学习到各种知识! 很熟悉,不再赘述,也可见

    2024年01月20日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包