MoCha

2025-12-11 0 976

MoCha

M iCrocontroller f o r c computer arc Itecture A tion( MoCha )是Niit University开发的8位微控制器。针对教学目的,具有完全合成的VHDL代码,所有单个组件的测试台,汇编器和一个循环精确的模拟器

文档简要概述设计,然后进行了一些细节和用法。具体文档及其链接如下:

  • 设计文档,包含在开发过程中做出的设计决策。
  • 汇编手册,包含有关汇编器的各种功能和用法的信息。
  • 模拟器手册,包含有关模拟器的各种功能和用法的信息。

内容

  1. 概述
  2. 特征
    2.1内存布局
    2.2步进电动机外围
    2.3 SPI闪存控制器
    2.4汇编器
    2.5模拟器
  3. 用法
    3.1引导过程
    3.2合成
    3.3加载用户程序

1。概述

该设计最初是由RN Biswas教授设计的,用于NIIT大学的计算机组织和建筑课程,在他离开大学之前,该设计仅在2011年的2011年迭代中使用。此后,该设计一直没有使用。在桑杰·古普塔(Sanjay Gupta)教授的密切监督下,作者对设计进行了重大更改,并在可编程的门阵列(FPGA)上进行了合成。此外,已经添加了基本的软件支持,以使其适合在计算机组织和体系结构以及微处理器和微控制器的课程中使用。

原始设计的添加如下:

  1. 银行寄存器和MVB ,将总内存从256B增加到64kb。
  2. 内存映射的I/O ,以提供与环境交互的能力。
  3. 步进电动机外围,所有当前微控制器都没有特征。
  4. SPI Flash接口,为存储持续数据提供支持。
  5. 可以编译用户程序和引导加载程序的汇编程序(差异以及引导过程已在启动过程部分中说明)。
  6. 模拟器,不仅简化了教学,还简化了调试过程。

图1和2分别显示了MoCha的框图和指令集体系结构(ISA)。如图1所示,它是基于累加器的公共汽车体系结构。尽管有指令可以执行注册到注册操作,但所有结果始终首先最终出现在累加器中。循环的数量在指令之间差异很大,对于JPP而言,NO-OP的循环低至7个周期。

Mocha框图“样式=”最大宽度:100%;“>
图1:框图
Mocha isa“ style =”最大宽度:100%;”>
图2:指令集体系结构

我们在Numato Mimas V2 Spartan 6 FPGA板上合成了设计。我们的实现达到了62MHz的最大时钟速度。目前,该设计最多支持16 I/O端口,其中8个保留。有关内存映射的更多信息,请参见“内存布局”部分。

2。功能

本节详细介绍了MoCha的某些功能和设计细节。

2.1内存布局

即使MoCha是8位设计,它也可以解决64KB的内存。这意味着所有需要持有地址的寄存器,即内存地址寄存器(MAR)程序计数器(PC)堆栈指针(SP) ,均为16位。虽然累加器(AR)也是负载和存储说明的地址来源,但并未使其宽16位。取而代之的是,添加了另一个称为银行寄存器(BR)的寄存器,该寄存器提供了地址的较高订单字节。登记册的命名是为了介绍和解释内存库的概念。

图3:内存映射
图3:内存映射

图3显示了MoCha的内存布局。如图所示,内存的最后32个字节是为I/O保留的。端口7的端口保留给I/O和外围设备。其余端口可用于添加更多外围设备或作为GPIO。我们的实施将端口8、9和10用作GPIO,而其余的未使用。可以通过编辑文件memory_unit.vhd and controller.vhd来轻松地重新映射它们。

2.2步进电动机外围

步进电动机外围是MoCha的独特特征,因为它在任何其他微控制器中都不存在。它只是四个I/O端口和计时器的组合。外围设备具有四个可配置的选项:速度,步骤,方向和启用。

  • I/O端口3-速度(5位) :可以将电动机配置为以32个不同的速度运行,0是最快的,最慢的31。
  • I/O端口4-步骤(8位) :电动机可以运行256个步骤。
  • I/O端口5-方向(1位) :用于配置旋转方向。
  • I/O端口6-启用(1位) :这是主启用位。必须将其设置为0以配置上述选项并将设置为1以运行电动机。

2.3 SPI闪存控制器

SPI控制器允许用户与闪存交互。尽管可以用于任何其他目的,但引导加载程序假定它可以连接到包含用户程序的闪存。它已经以某种方式实施,即为此目的没有专用的硬件(除了I/O端口),并且所有处理都是由软件完成的。图4显示了协议7的端口7的位。

图4:SPI控制器端口映射
图4:SPI控制器端口映射

提供了四个用于使用控制器的装配功能:

  • SPI_RESET_AND_ENABLE :重置设备并使其能够开始接受命令。
  • SPI_WRITE_BYTE :将单个字节写入SPI端口。
  • SPI_READ_BYTE :从SPI端口读取单个字节。
  • Spi_disable :禁用对设备的访问。

有关每个功能和用法示例的更多信息,请参见引导加载程序。

2.4汇编器

请参阅此文件。

2.5模拟器

请参阅此文件。

3。用法

本节详细说明了以下内容:

  1. 微控制器的引导过程
  2. 有关如何将设计合成到FPGA上的详细信息
  3. 将程序加载到微控制器上

3.1引导过程

为了使设计在运行的软件方面尽可能灵活,MicroController具有用于教学设计的看似复杂的启动过程。引导序列如下:

  1. 从微序列内存的地址0开始执行的微码开始执行。该代码将所有寄存器重置为0,并加载PC和SP的初始值。假定值按以下顺序存储在RAM中:

    • 地址0: SP [15:8]
    • 地址1: SP [7:0]
    • 地址2: PC [15:8]
    • 地址3: PC [7:0]
  2. 加载的PC值可以立即指向用户程序。但是,这意味着要使用户加载他/她的程序,他/她将不得不将其用于RAM中并每次生成新的二进制文件。事实证明,这是一个非常耗时的过程。在我们的实施中,加载PC指向的程序实际上是引导加载程序。引导加载程序将存储在SPI闪存中的用户程序加载到微控制器的主内存中。引导加载程序的大小为201个字节。因此,从地址202开始将用户程序加载到RAM中。汇编器适当地在二进制中取消PC。

    引导加载程序对用户二进制进行了一些假设,如下所述:

    • 字节中的程序大小已添加到用户程序中,即二进制的前两个字节应包含随后的程序的大小。这允许引导程序事先知道从ROM到RAM复制的字节数。
    • 二进制文件存储在ROM中,从地址0x0f0000开始。
  3. 最后,一旦复制了程序,启动加载程序就会跳到第一个指令并开始执行。

上述启动序列的优点是可以生成单个FPGA二进制文件以运行不同的程序。用户可以简单地将其程序加载到ROM中,然后打开微控制器。有关加载用户程序的更多信息,请参见“加载用户程序”部分。

3.2合成

为了合成微控制器,作者使用Xilinx ISE 14.7来生成Xilinx Spartan-6 XC6SLX9 FPGA的位文件。本节介绍了相同的合成过程。

  1. 此存储库中的hdl目录包含所有HDL源和测试台。将所有源文件加载到项目中。使controller.vhd成为该项目的顶级模块。

  2. 使用块内存生成器生成主内存。在组件名称main_ram下的文件memory_unit.vhd中查找模块规格。需要使用Bootloader初始化此内存,可以使用在目录ipcore_dir目录中找到的COE文件main_ram.coe来完成。

  3. 同样,分别使用control_unit.vhd中的规格生成解码器和微序列存储器,分别以decoder_rammp_ram名称生成。它们相应的COE文件也可以在目录ipcore_dir中找到。

  4. 使用controller.vhd中指定的端口编写用户构成文件。如果使用Numato Mimas V2 Spartan-6 FPGA板,则可能需要在目录ucf中使用作者的UCF文件。

  5. 最后,建立项目。如果一切顺利,您应该在项目目录中有一个controller.bit

3.3加载用户程序

安装Xilinx ISE 14.7时,还安装了一种称为promgen的工具。该工具可方便地用于组合FPGA的位文件和用户二进制文件。将二进制文件加载到FPGA上:

  1. 使用提供的汇编器生成程序的二进制文件。

  2. controller.bit和您的二进制文件与目录loader中的文件相同的目录中,即目录应包含五个文件。

  3. 运行脚本comb_bin并将二进制的名称传递为第一个参数。 Windows用户需要运行comb_bin.bat ,而Linux用户将需要运行comb_bin.sh

  4. 最后,运行脚本MimasV2Config.py ,将FPGA的端口号作为第一个参数,然后下载。bin作为第二个参数。

你完成了! FPGA现在应该启动您的程序。要加载其他程序,请将新文件放在上述目录中,然后使用新的二进制名称重复步骤3和4。

下载源码

通过命令行克隆项目:

git clone https://github.com/Sacusa/MoCha.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 建站资源 MoCha https://www.zuozi.net/35329.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务