时间过得真快,最近很忙,不好意思,这块板子的pico,microblaze,51内核我都玩过了,项目也完成了,一直没时间传,下面传点51内核的建立的东西 相信很多人都很喜欢51,因为很多人都从那里走过来,那么我们的板子能不能用51的程序驱动呢,下面就此展开讨论 目前网上公开发布的几个比较典型的805l IP核,如DW8051核.OpenCore组织的0C8051核及T51核,MC805l核等。这些IP核都是采用HDL语言描述的软MCU内核,其与工艺无关,能够在多种FPGA上进行逻辑综合及实现。
我使用的是Oregano公司开发的1.5版本免费的MC8051 IP核,它具有如下特点:
1)完全同步的设计;
2)指令集与标准的8051 MCU完全兼容;
3)采用优化的内核结构,指令周期较原MCS-51系列大幅提高,每一个指令仅占用1~4个时钟周期;
4)256字节内部的RAM,最大可提供64KB的ROM和64KB的RAM资源。
在FPGA中嵌入的8051内核,具有与51单片机类似的存储器结构,这些存储器的设计均使用FPGA芯片中的Block RAM资源,通过Xilinx提供的Core Generator工具实现。Core Generator是一个完整的设计工具,用来生成设计所需要的IP核,它既可以单独运行,也可以在ISE设计工具内执行。在设计中,要用到单片机中的三种存储区,分别为DATA,XDATA和CODE,这些存储区都是通过配置RAM & ROM中的单端口Block RAM(Single-Port Block RAM)IP核实现的。
MC8051 IP核的设计过程共包括如下5个步骤:
1)用Keil 编译8051的代码。
2)将生成的hex文件用hex->bin工具转成bin文件;
3)用bin->coe工具将hex文件转成coe文件;
4)在core generator 生成的ROM中指明coe文件的位置;
5)编译、下载到FPGA芯片。
这个是别人的步骤,下面我写下整体步骤首先,从mc官网下载51内核vhdl版本,然后解压缩到一个文件夹然后用ise新建一个工程,把刚才下载的文件里面所有vhd的文件拷贝到你工程目录下,然后把mc51内核top文件加入工程中,修改该工程文件的元件声明,包括rom,ram和时钟设计声明你会发现会出现很多的?号在工程下面,你根据提示添加各种文件在该工程下有一个ram和rom,必须用core generator来生成,需要注意点的是版本不同,生成以后需要修改相关目录下的定义,例如clk需要改为clka等等,改完后编译在生成ram时候,有一个地方需要注意点,有一个好像是we的,需要改成wea std_logic_vector(0 downto 0)等等,也要勾上前面51程序编译出来的东西hex文件转换成的coe文件,有一个init file的,然后建一个ucf文件,51程序用到的引脚定义一下,再加上时钟,复位按键就可以了,另外要加一个CONFIG VCCAUX="3.3";定义最大电压,定义输出引脚如下所示NET "p1_o<0>" LOC = "P4" | IOSTANDARD = LVCMOS18; ,输入为p1_i,大家自己慢慢去体会,弄这个我只用了几个小时,所以相对还是很简单的,呵呵下面贴点图片,没图没真相
别人文章
1、 用Keil编译8051的代码
这里的8051程序与普通的8051程序一样。由于是用keil编译,所以只能生成hex文件,如果使用其他编译器,如伟福,能直接生成bin文件,就能省略第二步。
2、 将生成的hex文件用hex->bin工具转成bin文件
也可以用另一个hex->bin工具转换。
3、 用bin->coe工具转成coe
输入文件(二进制)在:D:\工作文档\电子设计基本\数字电子电路\......
输出文件(*.coe)output.coe在D:\根目录下,而不在原来bin文件所在目录下。
4、 在core generate生成的rom中指明coe文件的位置
在ISE中打开8051 for Xilinx中的mc8051.ise(不能直接双击打开mc8051.ise)
打开i_mc8051_rom,在rom中load入刚才生成的coe文件
5、编译、下载到spartan-3e starter kit板上,你将会看到流水灯的效果
Synthesize(综合)、Translate(翻译)、map(映射)、Place&Route(布局布线)和Generate Programming File,这几步都需要很长时间(大约20~30分钟),最后可以看到整个MC8051所消耗的资源
mc8051核综合后结果
下载bit到Spartan3E XC3S500E里(没有固化到外置的PROM里,掉电自动消失),就可以看到板上的流水灯效果。
注:这只是一个最小系统,我没有接mc8051_ramx。如果想用ramx的话,可仿照mc8051_ram的方法用xilinx的ram核代替。
[
本帖最后由 梦之旅 于 2011-10-8 21:06 编辑 ]