利用FPGA片内资源构建51系统。软核来自https://www.oreganosystems.at/。还需要添加rom、ram和ramx。rom用来放51单片机的程序,即编译后的.hex文件。ram用来运行51单片机程序。时钟由PLL IP生成20MHz的时钟信号。分配管脚,编译配置FPGA的.sof文件。
(1) 修改Quartus工程的器件
针对DE10-lite,需要把FPGA型号修改成MAX10 10 10M50DAF484C7G.
(2) 更新IP
把rom、ram、ramx和PLL的器件都修改成MAX10.
注意,修改rom时,要指定一下.hex的文件。
PLL的locked信号,在代码里没有,这里可以根据需要,重新生成一次pll时钟信号。
(3) 修改.v文件
参考设计里的rst和点亮数码管都是高有效,这里要处理成低有效。
wire [7:0] seg;
assign digit_seg=~seg;
把信号先翻转一次。
mc8051_top mc8051_top_inst(
.clk(Clk20M),
.reset(~button[0]), //mc8051高电平复位
(4) 分配管脚
根据情况,分配管脚,没有用到的信号,要设置成virtual pin,可以在assignments > assignment editor里设置。主要用到了按键,拨动开关,led和hex0,注意数码管的段序不同。
最后,编译,生成sof,移植就完成了。
安装编译工具sdcc,进入example目录,运行make.bat,生成.hex文件。然后配置FPGA,运行C程序。打开8051工程,Tools-In-system memory content editor,连接开发板,指定接口,器件,选择前面的sof文件,配置好,再导入生成的之前hex文件,写入。就可以看到流水灯和数码管循环计数。移植成功。
【8051移植到DE10-lite】 https://www.bilibili.com/video/BV1YD421V7BE/?share_source=copy_web&vd_source=68c33dfb
807678d785a70ba1e19f297a
参考文献
https://mp.weixin.qq.com/s/UylS0KPbSxymiY-um69diA