FGPA实现单片机8051
开发环境硬件:ALTERA Cyclone IV系列 EP4CE6F17C8 开发板
IED: Quartus (Quartus Prime 21.1) Lite Edition (免费 )
内核IP:MC8051 Core IP V1.6
MC8051 Core IP简介
功能特点
采用完全同步设计指令集和标准 8051 微控制器完全兼容指令执行时间为 1~4 个时钟周期,执行性能优于标准 8051 微控制器 8 倍左右用户可选择定时器/计数器、串行接口单元的数量新增了特殊功能寄存器用于选择不同的定时器/计数器、串行接口单元可选择是否使用乘法器(乘法指令 MUL)可选择是否使用除法器(除法指令 DIV)可选择是否使用十进制调整功能(十进制调整指令 DA)I/O 口不复用内部带 256Bytes RAM最多可扩展至 64Kbytes 的 ROM 和 64Kbytes 的 RAM最多可扩展至 64Kbytes 的 ROM 和 64Kbytes 的 RAM目录结构
顶层框架
MC8051 IP Core 顶层框架图如下图所示,内核IP与外设的连接关系,其中用虚线标识连接的表示数量是可选。
顶层信号列表
信号
描述
clk
系统时钟. 只用时钟上升沿.
reset
异步复位所有触发器.
all_t0_i
定时器/计数器0 输入.
all_t1_i
定时器/计数器 1 输入.
all_rxd_i
串口数据接收.
int0_i
中断 0 输入.
int1_i
中断1 输入.
p0_i
P 0 输入.
p1_i
P 1 输入.
p2_i
P 2 输入.
p3_i
P 3 输入.
all_rxdwr_o
rxd 数据输出/输出方向控制 (高= 输出) .
all_txd_o
串口数据输出.
all_rxd_o
串口工作模式1数据输出.
p0_o
P 0 输出.
p1_o
P 1 输出.
p2_o
P 2 输出.
p3_o
P3 输出.
VHDL设计文件结构
FPGA嵌入MC8051
建立Quartus工程
打开 Quartus (Quartus Prime 21.1) Lite Edition出现界面如下:
建立新的工程
建立名为mcu_8051的工程
选择器件
工程创建完毕
创建顶层文件
MC8051 ROM和RAM模块生成
ROM生成
在右侧导航栏输入ROM
选择生成路径和语言类型
设置 ROM 的信息,数据宽度 8bits,数据个数 4069,其余默认
取消 ROM 的输出寄存器,时钟使能信号及异步清零信号不用选
指定 ROM 的初始化数据文件也即单片机程序编译出来的*.hex 文件。对于 ROM 模块,是一定要指定初始化数据的,要不然向导就不能完成所以选择之前创建的那个空白hex文件mcu_8051.hex 文件。
选择需要生成的文件
点击Finish至此ROM创建完毕
MC8051 中 RAM 模块包括内部 RAM 和扩展 RAM,生成方法和 ROM 一般无二,下面简述一下参数设置
内部 RAM 的参数设置,数据宽度为 8bits,数据个数为 128;取消 RAM 的数据输出寄存器,同时选中时钟使能信号端
点击Finish至此RAM创建完毕
修改MC8051 Core IP源文件
将MC8051 Core IP源码文件复制到工程目录下,由于默认提供的源码中的顶层设计文件中的存储模块(ROM、RAM)是仿真时使用的, 现在要进行硬件测试,所以必须改成我们实际用到的 ROM、RAM 模块,在”./vhdl”目录下的 mc8051_p.vhd 文件,将原文件中 ROM、RAM 模块调用的代码修改:
component mcu_8051_ram
port (
clock : in std_logic;
data : in std_logic_vector(7 downto 0);
q : out std_logic_vector(7 downto 0);
address : in std_logic_vector(6 downto 0);
wren : in std_logic;
clken : in std_logic);
end component;
component mcu_8051_rom
port (
clock : in std_logic;
q : out std_logic_vector(7 downto 0);
address : in std_logic_vector(11 downto 0));
end component;
mc8051_top_struc.vhd 文件,新增标识有“--新增”语句。然后将原文件中 ROM、RAM 模块调用部分完成了源文件更新修改。
添加MC8051核IP到工程
选择非配置文件
创建PLL锁相环模块
修改时钟,由于电路板上的有源晶振频率为 50MHz,所以输入频率设为 50MHz
一路默认知道第6页,选择c0输出频率为18MHz,时钟相移和占空比不改变
PLL生成完毕
顶层文件编写
module mcu_8051(
input Clk50M, //时钟源,50M
input Rst_n, //复位端口
input int0_i, //mc8051外部中断0输入
input int1_i, //mc8051外部中断1输入
input all_t0_i, //mc8051计数器0输入
input all_t1_i, //mc8051计数器1输入
input [7:0]p0_i, //mc8051端口0输入
input [7:0]p1_i, //mc8051端口1输入
input [7:0]p2_i, //mc8051端口2输入
input [7:0]p3_i, //mc8051端口3输入
output [7:0]p0_o, //mc8051端口0输出
output [7:0]p1_o, //mc8051端口1输出
output [7:0]p2_o, //mc8051端口2输出
output [7:0]p3_o, //mc8051端口3输出
input all_rxd_i, //mc8051串口接收端口
output all_rxd_o, //mc8051串口方式0时输出端口
output all_txd_o, //mc8051串口发送端口
output all_rxdwr_o //rxd 输入/输出方向控制信号(高电平输出)
);
wire Clk18M;
//例化PLL模块
pll pll(
.inclk0(Clk50M),
.c0(Clk18M)
);
//例化mc8051核
mc8051_top mc8051_top_inst(
.clk(Clk18M),
.reset(~Rst_n), //mc8051为高电平复位,因此将复位按键状态取反接到reset上
.int0_i(int0_i),
.int1_i(int1_i),
.all_t0_i(all_t0_i),
.all_t1_i(all_t1_i),
.p0_i(p0_i),
.p1_i(p1_i),
.p2_i(p2_i),
.p3_i(p3_i),
.p0_o(p0_o),
.p1_o(p1_o),
.p2_o(p2_o),
.p3_o(p3_o),
.all_rxd_i(all_rxd_i),
.all_rxd_o(all_rxd_o),
.all_txd_o(all_txd_o),
.all_rxdwr_o(all_rxdwr_o)
);
endmodule
对工程分析和综合
引脚的锁定
编译烧录FPGA
点击“start”开始烧录
之后就打开Keil进行8051正常C语言代码编程编译出来Hex文件配置到FGPA中即可验证,简单的MC8051齐活,后续外设IP可以基于进行开发。
单片机hex烧录
单片机最小应用系统及外部扩展总线
单片机的最小应用系统,是指能维持单片机运行的最简单配置的系统。这种系统成本低廉、结构简单,常用来构成简单的控制系统,如开关状态的输入/输出控制等。
最小应用系统的功能取决于单片机芯片的技术水平。对于片内有ROM/EPROM的单片机,其最小应用系统即为配有晶振、复位电路和电源的单个单片机;对于片内无ROM/EPROM的单片机,其最小系统除了外部配置晶振、复位电路和电源外,还应当外接EPROM或EEPROM作为程序存储器用。
8051/8751最小应用系统
8051/8751单片机内含有ROM/EPROM,用8051/8751单片机构成最小应用系统时,只需将单片机接上时钟电路和复位电路即可,如图7-1所示,因没有外部存储器扩展,这时接高电平,P0、P1、P2、P3都可作用户I/O口使用。
用8051/8751芯片构成的最小系统简单、可靠。但由于集成度的限制,最小应用系统只能用作一些小型的控制单元。同时,P0、P1、P2口的应用与开发环境差别较大。8051的应用软件须依靠半导体厂家用半导体掩膜技术置入,故8051应用系统一般用作大批量生产的应用系统。
图7-1 8051和8751最小应用系统电路
8031最小应用系统
8031单片机片内无程序存储器,因此,其最小应用系统必须在片外扩展EPROM。图7-2所示为8031外接程序存储器的最小应用系统。
图7-2 8031最小应用系统
与8051/8751最小应用系统一样,也必须有复位及时钟电路。片选线
直接接地,表明选择外部存储器;片外4K字节单元地址要求地址线12根(A 0 ~A 1 1),由P0和P2.0~P2.3组成;程序存储器的取指信号为
;地址锁存器的锁存信号为ALE。 7.1.3 MCS-51系列单片机的外部扩展总线
在进行系统扩展中,首先需要面对的问题是如何与外围芯片连接。为了方便解决这一问题,往往利用地址锁存器将单片机形成三总线结构,即地址总线(Address Bus)、数据总线(Data Bus)和控制总线(Control Bus),如图7-3所示。
➢ 地址总线: P2口作为地址总线的高8位,在访问16位的地址时,用于输出16位地址的高8位A 15 ~A 8 ;P0口分时复用地址/数据总线,地址锁存器用于锁存低8位地址A 7 ~A 0 。
图7-3 单片机三总线结构
提示
地址总线的根数决定了单片机可以访问的存储单元数量和I/O端口的数量。n条地址线可以产生2 n 个地址编码。
常用的地址锁存器为74LS373,构成地址总线时,它的8个输入端与P0口相连,其使能端连接单片机的ALE端。ALE信号为1时,P0口输出的数据被地址锁存器锁存,用作地址信号A 7 ~A 0 ;ALE信号为0时,P0口用于传输指令或数据(此时地址锁存器中的地址信号保持不变,能够保证数据传输给正确的地址)。
➢ 数据总线: P0口用作数据总线,数据总线是双向的,既可以由单片机传到外部芯片,也可以由外部芯片传入单片机。
➢ 控制总线: 控制总线主要负责对芯片的选通以及读/写等控制。引脚功能已在第二章中进行了详细介绍,这里不再赘述。
相关问答
8051 外部 扩展 需要多少地址总线?P0口是数据总线与低8位地址总线复用的,所以要加锁存器来锁存低8位地址,且这个锁存器的LE端要接单片机的地址锁存输出端ALE,P2口只做高8位地址总线,所以不需要...
8051单片机 有多少io线与外部总线有什么联系?8051单片机通常具有40个IO线(32个通用IO口和8个双向I/O口),用于与外部设备进行数据输入和输出。这些IO线通过引脚连接到外部电路或器件,以实现与其他设备的通...
8031和 8051单片机的 区别,最小系统需 扩展 那些部分?单片机8051与8031的区别仅仅是8051内部带有4KBROM,而且这个ROM不是一般用户可以用的,主要给掩膜用户的。对于一般用户来说,两者是一样的,所有单片机8051与80...
8051 系列 单片机 有哪些?8051单片机有Inter的8051,8751。Atmel的AT89C51,STC的STC89C51,Dallas的Dallas80C31……51单片机最初是由Intel公司开发设计的,但后来I...
8051单片机 外部中断,有哪些激活方式?有两种方式:下降沿触发方式和低电平触发方式80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、...
51系列 单片机 为()位单片机.2. 8051单片机 有两种复位方式,既...[最佳回答]1.MCS-51系列单片机为(8)位单片机.2.8051单片机有两种复位方式,既上电复位和手动复位.复位后SP=(07H),PC=(0000H),PSW=(00H),P0=(F...
8051单片机 如何实现中断屏蔽?基本型51单片机通过IE寄存器屏蔽中断,扩展型51单片机又增加了一个IE2寄存器,它们被称为中断使能寄存器,每个位都对应一个单独的中断源,某位设置为0就屏蔽了对...
8051单片机 RAM和ROM是统一编址的么 - 苦瓜真甜 的回答 - 懂得不是。是独立的8051ROM和RAM地址各自独立,可以重叠所以都可以扩展到0000H~FFFFH。不是,它们是各自独立的
8051 引脚图及功能?8051单片机引脚图及引脚功能介绍:40个引脚按引脚功能大致可分为4个种类:电源、时钟、控制和I/O引脚。⒈电源:⑴VCC-芯片电源,接+5V;⑵VSS-...8051单片...
8051单片机 内RAM低128字节划分为哪三个部分,有什么作用-ZOL问答8051单片机内部RAM低128单元划分为工作寄存器组、位寻址区、堆栈与数据缓冲区。它们的特点如下:(1)工作寄存器组(00H——1FH)这是一个用寄存器直接寻址的区域...