1.1. 实验任务:
不使用总线矩阵搭建系统,系统挂载APB_UART、AHB_SRAM等外设。
1.2. 实验所需模块
CortexM3.v -----------------------------------------顶层
cortexm3ds_logic.v -------------------------------M3内核
cmsdk_ahb_slave_mux.v ---------------------AHB外设选择
cmsdk_apb_slave_mux.v ---------------------APB外设选择
cmsdk_apb_uart.v -------------------------------APB外设UART
cmsdk_ahb_to_sram.v ------------------------AHB外设SRAM
cmsdk_ahb_to_apb.v ----------------------------AHB-APB桥
cmsdk_fpga_sram.v ----------------------------FPGA BlockRam/OnChip SRAM
cmsdk_mcu_addr_decode.v ------------------地址译码模块
cmsdk_ahb_default_slave.v---------------------AHB默认从设备
cm3_code_mux.v -------------------------------将ICODE和ICODE做MUX后输出

1.3. 实验步骤
1. 打开vivado,将文件全部添加到工程。

2. 在顶层文件中例化所有文件,其中需要对decode文件内部修改,以下是要注意的。
 在apb_slave_mux和ahb_slave_mux用参数化使能AHB和APB外设。
 将default slave设置为AHB PORT3作为缺省外设。
 将code_mux放到工程生成code_hadder给decode文件做例化使用。
 例化decode文件时,直接将sys_hsel和code_hsel定义为1,将remap_ctrl设置为0。
3. 编写约束文件。
4. 编写KEIL。
 打开keil,创建新工程,将以下C文件和启动文件添加到工程。
CortexM3_driver.c
Handler.c
Main.c
Retarget.c
System.c
startup_CM3DS.s
 修改keil设置。
 在主函数编写UART发送代码。
 软件仿真查看寄存器是否正常工作,软件仿真通过之后,把生成的hex路径添加到cmsdk_fpga_sram.v中。

5. Vivado行为级仿真,查看TX以及TX_buffer是否有数据变化,若有变化,则搭建成功。若没有,再去检查一下细节。

1.4 注意事项
1.首先也是最重要的,在不使用总线矩阵搭建最小系统时,译码单元要加以重视,本示例中最小系统挂载了ITCM,DTCM,UART以及一个默认外设,把UART挂到系统上要注意,必须先生成ahb_to_apb的选择信号PSEL¬_APB(这个信号还需要添加到AHB_SLAVE_MUX中),选中了ahb_to_apb之后,把ahb_to_apb这个模块生成的选择信号PSEL,给到apb_slave_mux,在经过apb_slave_mux的执行生成APB外设的选择信号PSEL_UART,这个选择信号给到UART这个模块,才能正确选中UART,才能在硬件层面上把UART挂载到系统上,并能使系统正确访问它。

2.其次,ITCM要放在code_mux下面,DTCM,UART以及默认外设要放到SYS_BUS下面,code_mux是把内核信号ICODE和DCODE进行整合的模块,它的输出要返回给内核,也要传送给DECODE和外设。

3.软件部分你可能遇见的问题,在KEIL上可以正常跑软件仿真,波特率和模式寄存器以及控制寄存器都能正常设置,函数都可以正常跳转,但把生成的HEX文件添加到硬件当中时,问题出现了,硬件无法调到主函数关于UART的部分,这就可能是有关UART的模块,存在大小写不一致的问题,有的模块是小写的uart,有的模块是大写的UART。

由下图可知,在系统总线地址(sys_haddr)为0x40000000-0x4000ffff的时候,UART被选中,而且uart_buf里也有了数据的变化,说明UART在正常发送。

如果前仿通过了,上板出现连接错误,很可能是你的硬件存在问题:
如出现SWD/JTAG Communication Failure

你需要检查一下硬件部分的调试模块,连线是否正确,用IP核生成的时钟例化是否存在问题。
如果出现No Debug Unit Device found

检查一下约束文件是否正确,你的引脚连接有差错也是不能上板的。
上板现象如下

按下复位之后,不断发送数据。
整个工程在本人主页

不使用总线矩阵的CortexM3最小系统搭建(AHB外设有ITCM,DTCM,DEFAULT_SLAVE和AHB_APB桥,APB外设只有一个UART)附整个工程相关推荐

  1. sap系统搭建教程_Nios ii最小系统搭建教程

    本教程以最小系统的概念为切入点,详细演示最小系统搭建的每一个步骤:外加嵌入式IP CORE详细的理论剖析和详细的实践演示,提供部分工程集源码下载链接.本手稿为实践总结,只是提供了一个思路,比如,驱动都 ...

  2. 【Aurix系列学习】汇总:TC264D芯片简介及最小系统搭建

    目录 写在前面 芯片资源介绍 芯片命名 系统资源 最小系统的搭建 原理图 PCB 原理图下载链接:https://download.csdn.net/download/qq_42059060/1556 ...

  3. 【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

    MicroBlaze是AMD-Xilinx提供的一个可以在FPGA中运行的嵌入式软核IP,其本质是一个32位RISC处理器软核,可以在150MHz时钟下,提供125 D-MIPS性能,具有运行速度快. ...

  4. 【Aurix系列学习】TC264D最小系统搭建—基本配置引脚

    目录 1. 测试引脚 2. 调试引脚 3. 复位/NMI引脚 /PORST引脚 /ESRx引脚 4. 电源引脚 初始引脚的配置是TC264D单片机的重点,这一块的配置关系到单片机能否正常上电并可靠运行 ...

  5. STM32最小系统搭建(原理图)

    目录 前言 一.搭建最小系统必须的引脚口 二.复位电路 ​ 三.外部晶振电路 四.系统启动配置 详细查看stm32数据手册 前言 下面介绍stm32f103c8t6最小系统的搭建,这款芯片也是销量最多 ...

  6. 抖音seo账号矩阵排名seo优化系统搭建部署

    无论商家矩阵账号还是个人账号矩阵,都需要解决的一个问题就是视频制作. 抖音seo账号矩阵优化,视频制作是核心开发功能: 场景:在 python 中,你可以使用 list[10:20:3] 来获取 10 ...

  7. 如何短视频AI智能混剪/矩阵视频引流/系统搭建

    1.短视频矩阵系统是什么? 随着短视频的发展,越来越多的商家开始在几个短视频平台上运营,如Tik Tok矩阵.汽车快手矩阵.头条矩阵等.更多账号.视频剪辑.发布:账户管理,分类经营:意向获客.高效管理 ...

  8. stm32f103r6最小系统原理图_STM32的最小系统板卡

    最近看到@淼大叔的作品,看到了作者对待硬件和软件的认真负责的态度.@青年信条有幸收到@淼大叔的STM32的最小系统的板卡,十分感谢,对于板卡的原理图和PCB并且还亲手焊接元器件的态度十分值得肯定和赞扬 ...

  9. 单片机复位电路电容一定用电解电容_什么叫51单片机最小系统

    单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机.晶振电路.复位电路.下面给出一个51单片机的最小系统电路图. 复位 ...

最新文章

  1. 计算机的五大主要应用领域是电大,电大计算机应用基础考答案
  2. Redis 未授权访问缺陷可轻易导致系统被黑
  3. 数字图像处理-1.图像获取
  4. Step By Step (zz from UESTC)
  5. linux 时区异常修正
  6. LeetCode之移除元素
  7. rgba转16进制颜色
  8. android手机空间占用,安卓手机清理数据八种方法教程,解决占用手机空间的烦恼!...
  9. 学习shell小窍门
  10. python 模拟微信浏览器请求_python+requests对app和微信小程序进行接口测试
  11. MySQL数据库在Windows系统上安装和基本使用
  12. 社区产品如何搭建内容体系?看看懂球帝与虎扑如何做
  13. scrapy实战----将数据存储到csv文件和MySQL数据库中
  14. 视觉显著性检测——PR曲线
  15. 华硕t100ta linux,华硕T100TA个人补充评测
  16. 使用origin画图,求得曲线各点的斜率,如何在book的sheet表中增加x和y的列数
  17. matlab aerospace 工具箱,MATLAB航空工具箱
  18. ulimit -c unlimited 详解
  19. 优信上市的365天:从生死时速到豹变之路
  20. JDBC中DatabaseMetaData用法

热门文章

  1. php判断简写,怎么简写php 中的三元运算符
  2. Python使用装饰器捕获异常,并写入日志,不中断进程
  3. docker 删除镜像时报错Error response from daemon: conflict: unable to delete xxx (must be forced) -
  4. Unity 初级保龄球游戏
  5. python函数对变量的作用_Python 包、模块、函数、变量作用域
  6. centos查看是否安装了某个软件
  7. YUM源安装,FTP安装
  8. 面向对象之反射和其他内置方法
  9. 06jQuery-06-AJAX
  10. Java复习-对象的回收与垃圾的回收