MSP430F147单片机软核使用

发布者:HeavenlyJoy444最新更新时间:2021-06-29 来源: eefocus关键字:MSP430F147  单片机 手机看文章 扫描二维码
随时随地手机看文章

2013年6月份,我对用FPGA验证CPU模型产生了兴趣,第一次接触FPGA是在2010年,当时刚会使用51单片机,在学FPGA的过程中,就会以单片机的思维去理解FPGA的开发过程,并且总是把verilog HDL当做C语言来使用,自然会有很多无法理解的问题出现,后来在自己坚持不懈的努力下,在verilog方面算是入门了。对于C语言与verilog的区别,我当时最大的体会是C语言是被编译为汇编指令,最终编译为二进制代码,由CPU去运行。而verilog的每个逻辑块会被编译成一个由逻辑门组成的数字电路,这些数字电路完成由verilog描述的逻辑功能。


一次偶然的机会在网上看到了51单片机的verilog代码,这对于我来说是一件很兴奋的事,CPU在我们眼里是一个很神秘的芯片,而芯片内部主要由数字电路组成,当时尝试着去阅读51单片机的verilog源码,但是由于水平有限,发现根本看不懂。经过多年的学习,汇编语言、C、C++都已熟练掌握,对单片机内部的体系结构也有所了解,并且对于verilog的理解和使用也上了一个台阶。今年6月份再次在网上把51的verilog源码下载了下来,大概的浏览一遍,感觉整个逻辑结构不是很复杂,所以就萌生了自己写一个简单CPU的想法。我对430单片机的汇编语言比较熟悉,所以确定以430指令集为自己第一CPU的指令集。


设计目标

1. CPU流水线的各个模块不是同步工作,一条指令执行完成才能执行下条指令

2. 每条指令周期不超过10个机器周期

3. 以MSP430F147单片机为原型,能够运行IARfor430编译器为MSP430F147单片机编写的程序。

4. 实现27条核心指令中的26条,不实现BCD加法指令(一般运用用不到此指令)

5. 不包含中断功能,预留外设接口,用户可添加自定义外设。


由于是第一次尝试实现CPU逻辑,所以省去了中断、流水线同步等功能。


目前实现功能

1.实现了27条核心指令中的26条,没有实现BCD加法指令。

2.指令周期为6~8个机器周期,返回指令ret除外,需要11个机器周期

3.没有实现中断功能,所以类似定时器这类的外设没有添加,目前添加了乘法器外设,P1和P2端口,且P1和P2端口没有中断功能

4.流水线各个模块是异步工作方式,即前一级模块工作完成,下一级才开始工作。

5.留有外设接口,方便用户添加自定义外设

6.在EP4CE155F29C8器件上运行最高频率为100MHz


资源使用报告

memory使用了33Kbyte,如果用户目标器件不支持这么多ram,可以调节quartus II 宏模块rom的大小,只要足够存储程序即可。


使用方法

1.将IAR编译的可执行文件嵌入到FPGA的ram中

使用IARFor430建立430单片机工程,编写程序,然后对编译选项做如下设置

右键工程名称,点击Options选项,出现下图对话框。

选择General Options菜单项,在Device里选择单片机型号MSP430F147。

选择Linker菜单项,点击output选项卡,在输出文件Format里选择other。IAR编译参数设置完成,编译工程,在工程目录//Debug//exe 下会有txt后缀文件,这就是工程 源码对应的ASSIC码文件。文件内容如下:(我提供的测试C程序对应的二进制代码)

@8000


31 40 00 06 B0 12 0C 80 B0 12 56 81 F2 43 2A 00

F2 43 22 00 F2 43 21 00 3C 40 E8 03 B0 12 40 81

B0 12 C6 80 7E 40 48 00 5D 43 5C 43 B0 12 EC 80

7E 40 65 00 5D 43 6C 43 B0 12 EC 80 7E 40 6C 00

5D 43 7C 40 03 00 B0 12 EC 80 7E 40 6C 00 5D 43

6C 42 B0 12 EC 80 7E 40 6F 00 5D 43 7C 40 05 00

B0 12 EC 80 7E 40 20 00 5D 43 7C 40 06 00 B0 12

EC 80 7E 40 57 00 5D 43 7C 40 07 00 B0 12 EC 80

7E 40 6F 00 5D 43 7C 42 B0 12 EC 80 7E 40 72 00

5D 43 7C 40 09 00 B0 12 EC 80 7E 40 6C 00 5D 43

7C 40 0A 00 B0 12 EC 80 7E 40 64 00 5D 43 7C 40

0B 00 B0 12 EC 80 7E 40 21 00 5D 43 7C 40 0C 00

B0 12 EC 80 FF 3F 7C 40 38 00 B0 12 26 81 7C 40

0C 00 B0 12 26 81 7C 40 06 00 B0 12 26 81 5C 43

B0 12 26 81 3C 40 64 00 30 40 40 81 5D 93 03 20

7C 50 80 00 02 3C 7C 50 C0 00 B0 12 26 81 4C 4E

B0 12 0C 81 7C 40 0C 00 30 40 26 81 C2 4C 29 00

E2 D2 21 00 E2 C3 21 00 D2 D3 21 00 D2 C3 21 00

1C 43 30 40 40 81 C2 4C 29 00 E2 C2 21 00 E2 C3

21 00 D2 D3 21 00 D2 C3 21 00 1C 43 30 40 40 81

05 3C 1F 53 3F 90 90 01 FC 2B 3C 53 0C 93 02 24

0F 43 F8 3F 30 41 30 40 5A 81 30 40 5E 81 FF 3F

@FFFE

00 80

q


这里面包含了程序存储器中存储的程序十六进制值和地址,下一步用我提供的转换工具将此文件转换为quartus II ram的初始化mif文件。

将其重命名为mem.txt文件,与我提供的转换工具Transform.exe放在同一目录下,运行Transform.exe出现如下对话框。

关闭对话框,在此目录下回生成romdata.mif文件。

2.添加装换文件(romdata.mif)到quartusII工程

将第二部中生成的romdata.mif文件添加到我提供的quartusII工程(CPUCore430)中,编译工程,下载程序到FPGA中,即可验证FPGA的430软核和实际MSP430F147单片机运行结果是否一致。


总结

目前只实现了P1和P2端口,和乘法器模块,且P1和P2端口不具备中断功能,所以在编写测试程序时,用户只能使用这三种外设,对操作其他外设,比如定时器、P3端口、AD采样等是没有效果的。下一片文章将给出用户添加自定义外设的实例,用户可以自己完成P3端口等其他外设的添加工作,由于不支持中断功能,所以目前还不能添加定时器这类外设。

随着后面写的文章对于整个CPU运行的原理介绍的升入,我希望能够在最后在此基础上把中断功能添加上,希望读者能够更好的理解,在设计过程中,我以为添加中断功能留有余地。希望大家能够对我写的软核感兴趣,希望更多的同行能够参与其中。


这是我写的第一个CPU软核,虽然功能和性能简单,但是,我从中发现了很多想要提升CPU性能带来的问题,并且通过查阅资料,自己思考也想出了解决问题的思路,先静下心来学习CPU设计相关理论知识,我将会实现能够执行MIPS指令集的CPU为下一个目标,并且做到流水线同步工作和存储器cache功能,尝试添加分支预测功能,对于MIPS体系指令集的优点,读者可以自己查阅相关资料。


由于时间仓促,为了在2013年最后一天能够发表此软核,目前测试工作还不够充分,希望大家在使用过程中遇到问题及时反馈给我,我会及时更正并回复。下一篇文章将介绍如何添加自定义外设。

关键字:MSP430F147  单片机 引用地址:MSP430F147单片机软核使用

上一篇:MSP430仿真器安装驱动提示INF找不到所需的段落解决方法
下一篇:MSP430 Flash的擦除、写入、读取操作

推荐阅读最新更新时间:2024-11-08 19:21

51单片机入门1
我们在单片机最小系统上接个LED,看我们能否点亮它!对了,上面也有好几次提到过单片机最小系统了,所谓单片机最小系统就是在单片机 上接上最少的外围电路元件让单片机工作。一般只须连接晶体、VCC、GND、RST即可,一般情况下,AT89C51的31脚须接高电平。 #include //头文件定义。或用#include其具体的区别在于:后者定义了更多的地址空间。 //在Keil安装文件夹中,找到相应的文件,比较一下便知! sbit P1_0 = P1 ^ 0; void main (void) { while(1) { P1_0 = 0;//低电平有效,如果把LED反过来接那么就是高电平有效
[单片机]
基于MCU的抽油机节能控制仪表与控制技术
  为了实现抽油机能自动根据负载需要实时进行 /Y双向切换和间歇定时控制的目标,采用嵌入式控制技术设计了如图1所示的控制电路。 ?   智能功率控制器的硬件系统以新华龙电子公司为C8051F206配套的实验板为基础,新增输出电路和键盘显示电路后形成。直接利用实验板上的C8051F206MCU、JTAG接口、晶振、复位及电源电路,大大降低了硬件设计工作量。   (1)输出电路   本系统的被控对象是电机的开关。为满足星角切换和开机/停机要求,需要对3只交流接触器(C1~C3)按一定组合关系进行控制,其电路原理和控制真值表如图2(a)和图2(b)所示。考虑到现场抗干扰的需要,在输出端口P0.1,P0.3和P0.5后采用了光电隔离
[单片机]
基于<font color='red'>MCU</font>的抽油机节能控制仪表与控制技术
16位Σ-Δ A/D转换器AD7705与微控制器的接口设计
   AD7705是 AD公司新推出的16位Σ-ΔA/D转换器。器件包括由缓冲器和增益可编程放大器(PGA)组成的前端模拟调节电路,Σ-Δ调制器,可编程数字滤波器等部件。能直接将传感器测量到的多路微小信号进行A/D转换。这种器件还具有高分辨率、宽动态范围、自校准、优良的抗噪声性能以及低电压低功耗等特点,非常适合仪表测量、工业控制等领域的应用。它采用三线串行接口,有两个全差分输入通道,能达到0.003%非线性的16位无误码数据输出,其增益和数据输出更新率均可编程设定,还可选择输入模拟缓冲器,以及自校准和系统校准方式。工作电压3 V或5 V。3 V电压时,最大功耗为1 mW,等待模式下电源电流仅为8 μA。    1 内部结构
[模拟电子]
51单片机之中断的实现过程
我们首先需要了解什么是中断? 中断是指cpu在执行某一过程中由于外界原因必须暂停现在的事情,处理别的事情,处理完了再回去执行暂停的事情。 中断的优点? 1.分时操作。 2.实时响应 3.可靠性高 中断中用到的寄存器: IE寄存器: 1.单路开关:EX0 ET0 EX1 ET1 ES EX0:外部中断0允许位 ET0:定时/计数器T0中断允许位 EX1:外部中断1允许位 ET1:定时/计数器T1中断允许位 ES:串行口中断允许位 2.总开关 EA:CPU中断允许位 EA=1打开 IP寄存器: 作用是选择优先级的,解决中断优先级问题。 IT0寄存器:选择低电平有效还是下降沿有效,上电默认电平触发方式,IT0=1是下降沿有效
[单片机]
基于PIC18F系列单片机的嵌入式系统设计
引言 嵌入式系统是指以应用为中心,以计算机技术为基础,软、硬件可裁剪,适应应用系统对功能、体积、成本、可靠性、功耗严格要求的专用计算机系统。嵌入式系统是面向应用的,系统的硬件选型和软件开发模式都必须根据具体的应用确定。 永磁无刷直流电动机是电机控制研究领域的热点之一,这与其自身固有的技术优势密切相关:以电子换相取代了有刷直流电动机的机械换相。从根本上革除了普通有刷直流电动机由于电刷换相带来的火花、噪音、高故障率等一系列问题,同时又使系统的性能能够与普通有刷直流电动机相媲美,因此得到了广泛的应用。永磁无刷直流电动机的电子换相离不开电机的转子位置信号,传统的方法是采用霍尔器件或其他位置传感器检测位置信号,这使得系统的维护和制
[应用]
基于Proteus软件仿真与Keil的单片机系统设计
1 概述   随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。单片机功能越来越强大,价格却不断下降的优势无疑成为嵌入式系统方案设计的首选,同时单片机应用领域的扩大也使得更多人加入到基于单片机系统的开发行列中,推动着单片机技术的创新进步。   然而传统的单片机系统开发除了需要购置诸如仿真器、编程器、示波器等价格不菲的电子设备外,开发过程也较繁琐。如图1所示,用户程序需要在硬件完成的情况下才能进行联调,如果在调试过程中发现需修改硬件,则要重新制板。因此无论从硬件成本还是开发周期来看,其高风险、低效率的特性显露
[单片机]
容纳两个DC/DC升压转换器的微控制器
  电池是便携式系统应用的典型电源,并且目前基于微控制器的便携式系统也不少见。各种微控制器均工作于低电源电压。因此人们能采用两节AA或AAA电池为电路供电。但是,如果电路需要更高电压——例如LCD的LED背光照明,它需要大约7.5VDC,则必须采用合适的DC/DC转换器把电源电压从3V提升至需要的电压。不过借助几个额外的分立元件,人们也可采用微控制器开发合适的DC/DC升压转换器。   本设计实例介绍如何用一个微型8引脚微控制器和几个分立元件来创建两个(而不只是一个)DC/DC转换器。该设计方案可伸缩,人们只须改变微控制器的控制软件,就能使它适应多种输出电压要求。人们甚至能对微控制器编程生成任何必要的输出电压启动速率。图1描绘了
[单片机]
容纳两个DC/DC升压转换器的<font color='red'>微控制器</font>
MCU用户面临三大挑战为其发展奠定了基础
在日益全球化和竞争激烈的环境中,微控制器的用户(OEM厂商)正在努力求得生存与发展。美国经济萎靡不振,使得他们的生存环境变得更加严峻。这些用户面临三种挑战:首先,他们正在努力通过功能特点、性能或价格使其终端产品实现差异化。其次,他们正在努力加快产品上市速度,以收回在复杂的设计上面所耗费的越来越多的投资。第三,他们试图在不增加成本的情况下实现上述两个目标。MCU用户面临的这些挑战为MCU的下一步发展奠定了基础。 为了使终端产品实现差异化,OEM厂商更加热衷于增加额外的功能特点,比如用户界面与连接性。用户界面正在迅速从按键型向触摸感应型转变。尤其是在家电产业,触摸感应用户界面在外观和功能性方面都具有优势。比如煤气灶表面
[单片机]
<font color='red'>MCU</font>用户面临三大挑战为其发展奠定了基础
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved