FPGA配置MC8051IP软核

一、
准备工具有:
1.Altera FPGA开发板 型号:EP4CE6F17C8
配置51软核过程中我发现配置成功与否和Altera FPGA型号关系不大,可以根据不同的AlteraFPGA型号来选定本工程的Device
在这里插入图片描述
2.两根Mini USB接口的数据线
一根用于供电和串口通信,另一根用于配置程序。
3.USB Blaster下载器
4.Quartus II开发工具(13版本)
其他的Quartus II版本没有尝试过
5.MDK开发工具
用来开发51,keil4和keil5皆可
6.此FPGA的用户手册
用于为配置好的51软核连接好必要的外围线路,如时钟信号,复位信号,外设连线等。
在这里插入图片描述
二、
接下来是配置51软核的网页教程和MC8051核的源文件。
网页教程
MC8051核源文件下载网址:
https://www.oreganosystems.at/products/ip-cores/8051-ip-core
在这里插入图片描述
选中Source Files并下载。由于是国外站点,下载速度会稍慢些,文件大小约200KB+。

三、简单总结
FPGA配置51软核就是利用片内资源直接构建成51系统,这得益于FPGA实现了51系统内各个模块的构建,这才能将它们组合起来成为51系统。

因为下载的MC8051核源文件中片内ROM和RAM存储模块不符合我们的使用要求,因此Quartus II新建一个空白工程后需要利用Quartus II自带的MegaWizard Plug-In Manager工具构建符合要求的ROM和RAM存储模块,还有一个RAMX外置存储模块。
新建PLL锁相环模块用于给MC8051提供时钟信号,其中ROM、RAM和RAMX在一定范围内可以任意调整,PLL锁相环模块输出频率也可调,但是不能超出MC8051的规定最大容量和运行频率。其他的寄存器根据需要也可以增加,增加端口和引脚等,是不是越来越体现出FPGA硬件资源灵活的调整性?
原文的构建工程篇幅非常长,如果不想按部就班来构建工程,可以直接使用我完成好的工程文件。
只需要更改FPGA型号和更改引脚关联并重新编译综合就行。但FPGA型号最好是和我FPGA同一时代的系列产品,拿年代久远的型号不一定成功。
原文中没有给出完成的工程文件,我这边就打包在百度网盘了,方便有需要的人下载,附带有PL2303串口驱动程序。
百度网盘链接:
https://pan.baidu.com/s/1jb97JOUb1tUOoJdh_aIFbQ 提取码: shr1
四、成品
在这里插入图片描述

在这里插入图片描述
点亮LED、串口通信、数码管显示。这里51系统的外设是关联FPGA板载的LED,数码管。
在这里插入图片描述
在这里插入图片描述
51c程序代码:

#include<reg51.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
char xdata Xcount _at_ 0x500; //定义外部 RAM 变量
uchar led=0xff;  //LED 初化值
uchar counter; //500ms 计数器
//*************************** 延时程序
sbit p20=P2^0;
sbit p21=P2^1;
void delay(uint n)
{
	uint k;
	while(n--);
	{
		for (k=0;k<40000;k++)
		{;}
	}
}
//*************************** 定时器中断 0 程序
void timer0(void) interrupt 1
{
	ET0=0;  //关定时器 0 中断
	TR0=0;  //不允许定时器 0 计数
	TH0=0x8a; //重装定时初值(18MHz)
	TL0=0xd0;
	TR0=1;  //允许时器 0 计数
	if(++counter==35) //500ms 计数
	{
		/*counter=0;
		if(led==0xf0)
			led=0xff;
		else
			led<<=1; //左移 1 位	  */
	}
		//P1=led; //输出到 P0 口	
	ET0=1;
}
//*************************** UART 程序
char putchar(char c)
{
	SBUF = c;
	if (c == 'n') SBUF = 0x0d;
	while (!TI);
	TI = 0;
	return (c);
}
//*************************** 主程序
main()
{
	SCON = 0x50; //选择模式 1, 8 位数据格式,使能 UART
	PCON |= 0x80; //波特率加倍
	TMOD = 0x21; //定时器 0:模式 1;定时器 1:模式 2
	TH0=0x8a; //20ms 定时初值(18MHz)
	TL0=0xd0;
	TH1 = 0xF6; //定时器 1 自动装载初值, 时钟频率 18MHz, 0xF6(9600bps)
	TL1 = 0xF6;
	TR0=1; //允许定时器 0 计数
	TR1 = 1; //定时器 1 计数使能
	ET0=1; //允许定时器 0 中断
	EA=1; //开总中断
	Xcount=0;
	while(1)
	{

		P1=0xf1;
		p20=0;
		p21=1;
		P0=0xf0;

		printf("Xcount = %02bXn",Xcount++);

		printf("Hello World.n");
		delay(300000);
		delay(300000);
		delay(300000);
		delay(300000);

		p20=1;
		p21=0;
		P0=0xf0;

		delay(300000);
		delay(300000);		
		delay(300000);
		//P1=0xf0;
	}
}

五、
关于FPGA配置51软核,我只粗略介绍了一些内容,或许有不正确或不全面的地方,建议想专业学习FPGA开发的读者寻找更专业的书籍和教程资源来学习。

  • 12
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
8051单片机内核IP源码cyclone2 fpga quartu工程文件+文档说明, 可以做为你的FPGA设计学习参考。 该部分的8051内核的顶层信号引脚在8051内核的顶层便可查看到各个引脚模块的定 义。引脚的定义和普通的 8051 单片机相似,区别在于 P3 口的定义,普通的 8051 单片机的 P3 口有双重功能,在对普通的 8051 单片机编程时,特别是用 C 进行编程时所面向的是寄存 器层面的,但在硬件层面上,在定义 P3 口的两种功能时是不一致的,原因是用 C 编程时, 编译软件已经将 C 代码转变成机器代码,让机器能够辨别要用哪一个硬件模块,也就是 8051 的内核已经“解码”了机器码。普通的 8051 芯片的引脚框图和 P3 口的定义如下如下: 8051IP 核 核心本身是由定时器/计数器,ALU,串行接口,和控制单元组成。 8015 内核的原理图: Clk:时钟输入 Reset:复位输入引脚 rom_data_i:ROM 数据输入 ram_data_i :RAM 数据输入 int0_i 外部中断 0 int1_i:外部中断 1 all_t0_i:定时计数 0 all_t1_i:定时计数 1 all_rxd_i:串口接收 p0_i:IO-port0 input p1_i:IO-port1 input p2_i :IO-port2 input p3_i:IO-port3 input p0_o:IO-port0 output p1_o:IO-port1 output p2_o :IO-port2 output p3_o :IO-port3 output all_rxd_o:内部接收后直接输出,可以进入 all_rxd_i all_txd_o:串口发送 all_rxdwr_o:接收方向信号 rom_adr_o: 输出到 ROM 地址信号 ram_data_o:输出到 RAM 数据信号 ram_adr_o :输出到 RAM 地址信号 ram_wr_o :数据输出到 RAM 的使能信号 ram_en_o:RAM 的时钟使能信号 datax_i:从 RAM 的数据输入到单片机的信号 datax_o:从单片机输出数据到 RAM 的信号 adrx_o:RAM 的地址信号 wrx_o:RAM 的写使能信号

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QuanSirX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值