【FPGA】51的IP核烧进FPGA,配合keil生成的.hex文件调试

IP核:89C51
FPGA芯片类型:EP4CE6E22CN8

FPGA_LED12 交替亮灭 灯

总体过程描述

先创建工程1 生成51IP核原理图符号,供工程2使用。再建另一个工程2 创建原理图,把所需要的符号都添加进来 或者 利用宏功能 生成添加。(除了51IP核,其余的都可以利用宏功能 生成添加)再将其烧录进FPGA,配合keil软件生成的.hex文件来调试。

1、下载文件—移动位置

把老师提供的资料中的mc8051文件夹下的vhdl文件夹在这里插入图片描述放在你自己新建的要用来烧录的my8051_test文件夹

其它文件我们本次是用不到的,不用管。

在这里插入图片描述

2、创建project1

这一步是 为了获取 51IP核的原理图符号
在这里插入图片描述

就是基本的新建工程嘛 【File】--【New Project ...】 基本操作啊
在这里插入图片描述

注意:不这样选的话后面的51IP核可能会通过不了哦,会报引脚数目不对的错误

2.1 添加文件

创建好了 是一个空的工程 点击【Assignments】--【setting】--【General】--找到右侧的【...】---找到你工程目录下刚刚添加的 vhdl文件夹--把文件添加进去

添加文件时候可以全选 【ctrl+A】 然后按住【ctrl】把带有cfg的文件 和 最底下的带有top的文件取消选择

在这里插入图片描述

2.2 重新设置顶层文件

找到mc8051_core.vhd 【右键】设置为顶层文件
在这里插入图片描述

2.3 编译

在这里插入图片描述
然后就是等待了

2.4 生成符号

在这里插入图片描述
生成完以后,你会发现在工程目录下多了一个.bsf文件

在这里插入图片描述

project1中的工作告一段落

3、创建project2

这一步是 为了获得单片机最小系统
在这里插入图片描述

就是基本的新建工程嘛 【File】--【New Project ...】 基本操作啊

在这里插入图片描述

此处的命名可以随意 别和上一个一样就行

在这里插入图片描述
这里的芯片选型要和自己FPGA开发板上的一样了,因为我们是要烧录这个工程生成的文件的,型号必须适配。
!!!这也是project1的初始创建的唯一不同的地方!!!
在这里插入图片描述

3.1在新工程下创建原理图

【File】--【New】 创建一个空白的图
在这里插入图片描述

3.2 再次添加文件

重复project1的步骤即可
在这里插入图片描述

3.3 添加&宏功能模块_生成 符号

点开这个会发现,已经存在mc8051_core 这个就是你 project1中生成的
,先把它放在原理图中吧,随便放一个位置就行
其它的还没有,因为还需要我们自己弄

在这里插入图片描述
在这里插入图片描述

3.3.1 宏功能模块_生成计数器

看着符号图应该就能做出来的吧 基本操作哦!
在这里插入图片描述

3.3.2 宏功能模块_锁相环

看着符号图应该就能做出来的吧 基本操作哦!
在这里插入图片描述

3.3.3 宏功能模块_ROM

看着符号图应该就能做出来的吧 基本操作哦!
在这里插入图片描述

a. 注意点 导入.hex文件 & ROM ID的设置

生成这个要添加数据文件--我们可以用keil软件生成 .hex文件,不加会生成不了!!!
在这里插入图片描述

b. 生成.hex文件

把下面这段代码赋值到keil软件中 编译就可以生成.hex文件
不过记得要设置好 才能生成 .hex文件
在这里插入图片描述

#include <reg51.h>	   //此文件中定义了51的一些特殊功能寄存器
#define  LED1 P1
#define  LED2 P2
void Delayms(unsigned int cnt);		//@11.0592MHz

void main()
{ 
   while(1)
	 {
		LED1  = 0x00; //控制D2口 低亮高灭
		Delayms(500); 
		LED1  = 0xff; //置P1口为高电平
		Delayms(500); // 调用延时程序
		LED2  = 0x00; //置P2口为高电平 
		Delayms(500); // 调用延时程序
		LED2  = 0xff; //置P2口为高电平
		Delayms(500); // 调用延时程序
	 }
}

/*******延时函数*************/
void Delayms(unsigned int cnt)		//@11.0592MHz
{
	unsigned char i, j, k;
	while(cnt--)
	{
			i = 11;
		j = 190;
		do
		{
			while (--j);
		} while (--i);
	}
}
3.3.4 宏功能模块_RAM

在这里插入图片描述

3.4 原理图连线

图有点大 直接截 截不清楚 分部分来吧

3.4.1 左半部分

在这里插入图片描述

3.4.2 右半部分

此处将MCU
P2_OUT[0]设置为LED2的口 对应我们写keil程序的P2
P1_OUT[0]设置为LED1的口对应我们写keil程序的P1 (我下面有代码)
在这里插入图片描述

在这里插入图片描述

3.4.3 下半部分

在这里插入图片描述

整体原理图

在这里插入图片描述

编译原理图工程

project1一样的操作。。。静静等待。。。。
在这里插入图片描述

4、配置引脚

可以根据原理图来配置 或者 看老师给的表格
在这里插入图片描述
!!!这样配置!!!
在这里插入图片描述
在这里插入图片描述

4.1 引脚仿真

看这样配IO 行不行
在这里插入图片描述

5、再次编译工程

project1一样的操作。。。静静等待。。。。

6、烧录原理图程序

在这里插入图片描述

6.1 选择.sof文件

在这里插入图片描述
在这里插入图片描述
烧录完以后可以看到 初始放进 ROM代码 产生的现象了

7、烧录.hex 替换原来ROM中的文件 观察现象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


每天进步一点点 笔记仅供自学,用来回看复习,不一定适合你,如有错误请指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

KevinGuo457

哈哈哈资助我买两包辣条叭

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

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

打赏作者

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

抵扣说明:

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

余额充值