【lattice软核】MICO8流程
The LatticeMico System software is composed of three bundled applications:
- Mico System Builder (MSB)
- C/C++ Software Project Environment (C/C++ SPE)
- Deployment
设计流程:
1、创建一个diamond目标器件的工程,注意综合工具手册要求
2、使用MSB创建一个微控制器平台,添加core,选取所需外设,定义连接。组合好一个MCU。
关联器件地址,关联中断请求优先级,DRC检查,生成LM8.(此处只需点击工具栏的A,I,D,G)
根据xx_inst.v编写XX_top.v文件,要包含soc目录下的xx.v
3、在C/C++ SPE中,建C工程,敲单片机代码。编译好后,配置成片上存储镜像文件 给LM8
4、在MSB中点开处理器的选项,把镜像装载进去,相当于单片机的烧写程序吧。重新生成
5、回到diamond,加载刚才XX_top.v文件(把复制源文件到工程目录选上)。然后可以将单片机作为工程中的一个小模块也可以直接作为顶层,编译,定义管脚,,,配置。
详细流程:
【=============================================================】
一,一,一,一,一,一,一,一,一,一,
【=============================================================】
Task 1: Create a New Lattice Diamond Project
添加源文件,不用添加,不上图了。
综合工具选择,不上图了。
注意综合工具这只支持Synplify Pro,不支持LSE
然后完成后,工程建好了,这部分就OK了。
【=============================================================】
二,二,二,二,二,二,二,二,
【=============================================================】
Task 2: Create LatticeMico8 Platform
2.1 Create a New MSB Platform
启动程序:开始>程序 > Lattice Diamond> Accessories > LatticeMico System.
新建平台:File > New Platform.
不是所有器件都能应用到所有FPGA或CPU
2.2 Add the Microcontroller Core
建立工程的第一步是添加CPU,在左侧元器件栏双击 LatticeMico8,打开对话框
2.3 Add the Peripheral Components
Add the GPIO
双击左侧栏的GPIO,打开对话框
Add the UART
double-click UART to open
2.4 Specify the Connections Between Master and Slave Ports
有两种类型的端口:master ports and slave ports
2.5 Assign Component Addresses
To automatically assign component addresses:
- Choose Platform Tools > Generate Address,
- or click the Generate Base Address button ,
- or right-click in the Editor view and choose Generate Address from the pop-up menu.
其实就是点击上面的,A,I,D,G
2.6 Assign Interrupt Request Priorities
Generate IRQ button
2.7 Perform a Design Rule Check
2.8 Generate the LatticeMico8 Platform
现在要生成mico微处理器平台了,此处会做两件事在目录“lm8_tutor\platform1\soc” directory::
一个 platform1.msb file
一个 platform1.v (Verilog) file
对于verilog用户,platform1.v 文件可以包含到仿真和实例化中去,
要创建,
软件生成了一个 platform1_inst.v 文件,其中包含了调用 platform1_inst.v 的模版,在此微处理器不是顶层的情况下有用
此文件如下:
`include "../components/lm8/rtl/verilog/lm8_include_all.v"
`include "../components/gpio/rtl/verilog/gpio.v"
`include "../components/gpio/rtl/verilog/tpio.v"
`include "../components/uart_core/rtl/verilog/uart_core.v"
platform1 platform1_u (
.clk_i(clk_i),
.reset_n(reset_n)
, .LEDPIO_OUT(LEDPIO_OUT) // [4-1:0]
, .uartSIN(uartSIN) //
, .uartSOUT(uartSOUT) //
);
platform1_inst.v
2.9 Create a User Top-Level Module
生成的平台不是顶层的时候,你要编写一个顶层文件,如 platform1_top.v 去实例化平台,
把文件放到这个目录 <Diamond_install_path>\examples\lm8_tutor\platform1\soc
需要把这个文件导入到diamond工程源文件,注意文件末尾多打几个空格,否则有可能会出错
`include "../soc/platform1.v"
module platform1_top
(
input reset_n,
input uartSIN,
output uartSOUT,
output [:] LEDPIO_OUT
);
// MachX02 internal oscillator generates platform clock
wire clk_in;
OSCH OSCH_inst (.OSC(clk_in), .SEDSTDBY(), .STDBY('b0));
defparam OSCH_inst.NOM_FREQ = "24.18";
platform1 platform1_u
(
.clk_i (clk_in),
.reset_n (reset_n),
.LEDPIO_OUT (LEDPIO_OUT),
.uartSIN (uartSIN),
.uartSOUT (uartSOUT)
);
endmodule
platform1_top.v
【=============================================================】
三,三,三,三,三,三,三,三,三,
【=============================================================】
Task 3: Create Software Application Code
此处创建C/C++的软件应用,C/C++基于eclipse环境开发
点击左上标签打开窗口
界面如下
3.1 Create a New C/C++ SPE Project
第一步:File > New > Mico Managed Make C Project.
3.2 Build the Project
选择左侧工程栏的LEDTest 并且 Project > Build Project.
【=============================================================】
四,四,四,四,四,四,四,四,
【=============================================================】
Task 4: Deploy Software Application Code to LatticeMico8
LEDTest ELF文件里,得转化成十六进制初始化文件,
prom_init.hex 用来初始化 LatticeMico8 PROM
scratchpad_init.hex 用来初始化 LatticeMico8 Scratchpad
第一步:选择 LEDTest and choose Tools > Software Deployment
Click Apply and then click Start
4.1 To initialize LatticeMico8 with LEDTest initialization files:
第一步:返回MSB窗口
第二步:双击LM8打开对话框
再次生成,点击Run Generator
【=============================================================】
五,五,五,五,五,五,五,
【=============================================================】
Task 5: Generate Platform Bitstream
5.1 Import the MSB Output File
Configure the Lattice Diamond Environment
1.在 Diamond, choose Tools > Options
2. Under Environment, in the left pane of the Options dialog box, select General.
3. If the option Copy file to Implementation's Source directory when adding existing file is selected, clear this option and click OK
5.2 Importing the Source Files
You import the top-level file, platform1_top.v, into Diamond
【=============================================================】
六七八九十,六七八九十,六七八九十,六七八九十,六七八九十,
【=============================================================】
Task6,7,8,9,10。。。
然后接下来的步骤就是通常的综合,引脚分配,布局布线,下载。
good luck!~~
【lattice软核】MICO8流程的更多相关文章
- 【lattice软核】ROM的使用
=======================>>>>> 一.ROM核调用:==================>>>>> ======== ...
- FPGA的软核与硬核
硬核 zynq和pynq系列的fpga都是双ARM/Cortex-A9构成,这里的ARM处理器为硬核,Cortex-A9部分为FPGA部分.即整体分为两部分:PS/PL.PS部分为A9处理器部分,PL ...
- wrHDL编译中软核代码初始化及编译耗时长的问题
问题的提出整个WR的ISE工程比较大,编译时间很长,导致开发效率低.通过分析发现,ISE在综合的时候大量的时间都花在了初始化DPRAM上.调研发现Xilinx提供了BMM文件和DATA2MEM工具,可 ...
- [置顶]
基于FPGA的VGA简易显存设计&NIOS ii软核接入
项目简介 本项目基于Altera公司的Cyclone IV型芯片,利用NIOS II软核,2-port RAM与时序控制模块,实现64*48分辨率的显存(再大的显存板载资源m9k不够用) 实现效果如下 ...
- Spartan6上软核系统自定义外设调用AXI Stream FFT经验
这几天希望能在Spartan系列新品xc6slx16csg324-2运行带有FFT的软核处理系统,基本系统早就搭建好了.需要做的就是建立一个封装有Xilinx提供的FFT IP的自定义外设.由于Xil ...
- ISE创建Microblaze软核(三)
第七步 进入SDK开发环境 编译完成后弹出如下对话框,选择SDK的工作目录.在MicroblazeTutor中创建一个Workspace文件夹,并选择该文件夹为SDK的工作目录. 进入SDK主界面. ...
- ISE创建Microblaze软核(二)
ISE创建Microblaze软核(二) (2012-07-13 15:09:08) 转载▼ 标签: 杂谈 分类: FPGA开发 第四步 进入Platform Studio操作界面 通过向导创建软核后 ...
- ISE创建Microblaze软核(一)
在使用FPGA时,有时会用到它做为主控芯片.对于习惯于单片机及C语言开发的人,使用FPGA做主控芯片,首先还是想到它的嵌入式软核功能.如果能够基于Microblze软核进行C语言程序的开发,相对于使用 ...
- 【小梅哥FPGA进阶教程】MC8051软核在FPGA上的使用
十.MC8051软核在FPGA上的使用 本教程内容力求以详细的步骤和讲解让读者以最快的方式学会 MC8051 IP core 的应用以及相关设计软件的使用,并激起读者对 SOPC 技术的兴趣.本实验重 ...
随机推荐
- window.event对象详尽解析
event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromEleme ...
- Head中的标签
Head中的其它一些用法 1.scheme (方案) 说明:scheme can be used when name is used to specify how the value of conte ...
- [Effective JavaScript 笔记]第65条:不要在计算时阻塞事件队列
第61条解释了异步API怎样帮助我们防止一段程序阻塞应用程序的事件队列.使用下面代码,可以很容易使一个应用程序陷入泥潭. while(true){} 而且它并不需要一个无限循环来写一个缓慢的程序.代码 ...
- Hibernate Criteria Restrictions
HQL运算符 QBC运算符 含义 = Restrictions.eq() 等于equal <> Restrictions.ne() 不等于not equal > Restrict ...
- Locality Sensitive Hash 局部敏感哈希
Locality Sensitive Hash是一种常见的用于处理高维向量的索引办法.与其它基于Tree的数据结构,诸如KD-Tree.SR-Tree相比,它较好地克服了Curse of Dimens ...
- 如何使用double-check实现一个单例模式
private object m_mutex = new object(); private bool m_initialized = false; private BigInstance m_ins ...
- R----stringr包介绍学习
1. stringr介绍 stringr包被定义为一致的.简单易用的字符串工具集.所有的函数和参数定义都具有一致性,比如,用相同的方法进行NA处理和0长度的向量处理. 字符串处理虽然不是R语言中最主要 ...
- Exception&Error
Java异常处理 1:什么是异常 异常(Exception)也叫异常.在Java编程语言中,异常就是程序在运行过程中由于硬件设备问题.软件设计错误.缺陷等导致的程序错误. 1.1:想打开的文件不存在 ...
- Android 坐标系统
屏幕的左上角是坐标系统原点(0,0),原点向右延伸是X轴正方向,原点向下延伸是Y轴正方向. 一.View的坐标 需要注意view的坐标是相对父容器而言的,包括:getTop().getBott ...
- PDO数据库抽象层
PDO的优势在于兼容性,但速度不如mysql和mysqli new PDO($dsn,$username,$passwd[,$options]) $options可以设置数据库连接属性,如: $opt ...