实验现象:

1、先烧写FPGA程序,再烧写ARM程序,ARM程序烧写完毕后即开始读写RAM测试,测试成功,绿色ARM·LED亮,测试失败,红色ARM·LED闪烁。

2、测试成功,ARM通过映射寄存器来控制FPGA三色LED循环点亮。

核心代码:

int main(void)
{ /* USER CODE BEGIN 1 */
int i; /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */
SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */
MX_GPIO_Init();
MX_FMC_Init(); /* USER CODE BEGIN 2 */
for(i = ;i < ;i ++){
fpga_write(i, * i);
}
for(i = ;i < ;i ++){
if(fpga_read(i) != *i){
while(){
LED_RED_ON;
HAL_Delay();
LED_RED_OFF;
HAL_Delay();
}
}
}
LED_GREEN_ON;
/* USER CODE END 2 */ /* Infinite loop */
/* USER CODE BEGIN WHILE */
while ()
{
/* USER CODE END WHILE */ /* USER CODE BEGIN 3 */
FPGA_LED_RED_ON;
FPGA_LED_GREEN_OFF;
FPGA_LED_BLUE_OFF;
HAL_Delay(); FPGA_LED_RED_OFF;
FPGA_LED_GREEN_ON;
FPGA_LED_BLUE_OFF;
HAL_Delay(); FPGA_LED_RED_OFF;
FPGA_LED_GREEN_OFF;
FPGA_LED_BLUE_ON;
HAL_Delay();
}
/* USER CODE END 3 */ }
//-----------------------Module fsmc_ctrl-----------------------//
module fsmc_ctrl(
input clk_100m,
input rst_n,
input [:]ab,
inout [:]db,
input wr_n,
input rd_n,
input cs0,
input nadv,
output led_red,
output led_green,
output led_blue
); wire wr,rd;
wire [:]out_data;
//-------------------------wr & rd-----------------------------//
assign wr = cs0 | wr_n;
assign rd = cs0 | rd_n; //-------------------------address-----------------------------//
reg [:]address;
always@(posedge nadv or negedge rst_n)
if(!rst_n)
address <= 'd0;
else
address <= {ab,db}; //锁存地址 //----------------------------clk------------------------------//
reg wr_clk1,wr_clk2;
always@(posedge clk_100m or negedge rst_n)
if(!rst_n)
begin
wr_clk1 <= 'd1;
wr_clk2 <= 'd2;
end
else
{wr_clk2,wr_clk1} <= {wr_clk1,wr}; wire clk = (!wr_clk2 | !rd); assign db = !rd ? out_data:'hzzzz; //----------------------------ram------------------------------//
ram u1(
.address(address),
.clock(clk),
.data(db),
.wren(!wr),
.rden(!rd),
.q(out_data)
); //----------------------------led_ctrl-------------------------//
reg led[:];
always@(posedge wr or negedge rst_n)
if(!rst_n)
begin
led[] <= 'd1;
led[] <= 'd0;
led[] <= 'd1;
end
else
begin
case(address) //映射寄存器地址
'd10:led[0] <= db;
'd11:led[1] <= db;
'd12:led[2] <= db;
endcase
end assign led_red = led[];
assign led_green = led[];
assign led_blue = led[]; endmodule

源代码下载链接:

链接:http://pan.baidu.com/s/1nvkhPWl 密码:7x76

iCore4链接:

【iCore4 双核心板_ARM】例程二十八:FSMC实验——读写FPGA的更多相关文章

  1. 【iCore3 双核心板】例程二十:LAN_TCPC实验——以太网数据传输

    实验指导书及代码包下载: http://pan.baidu.com/s/1pJY5uXH iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  2. 【代码升级】【iCore3 双核心板】例程二十八:FSMC实验——读写FPGA

    实验指导书及代码包下载: http://pan.baidu.com/s/1qXAxwgk iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  3. 【iCore3 双核心板】例程二十八:FSMC实验——读写FPGA

    实验指导书及代码包下载: http://pan.baidu.com/s/1gerjjxh iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  4. 【iCore3 双核心板】例程二十二:LAN_UDP实验——以太网数据传输

    实验指导书及代码包下载: http://pan.baidu.com/s/1kTPlJMJ iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  5. 【iCore3 双核心板】例程二十四:LAN_DHCP实验——动态分配IP地址

    实验指导书及代码包下载: http://pan.baidu.com/s/1i4vMMv7 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  6. 【iCore3 双核心板】例程二十五:LAN_DNS实验——域名解析

    实验指导书及代码包下载: http://pan.baidu.com/s/1jHlBpqe iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  7. 【iCore3 双核心板】例程二十六:MODBUS TCP实验——电源监控

    实验指导书及代码包下载: http://pan.baidu.com/s/1pKhxKd9 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  8. 【iCore3 双核心板】例程二十九:SD_IAP_FPGA实验——更新升级FPGA

    实验指导书及代码包下载: http://pan.baidu.com/s/1o7h158m iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  9. 【iCore3 双核心板】例程二十一:LAN_TCPS实验——以太网数据传输

    实验指导书及代码包下载: http://pan.baidu.com/s/1ntTjWpV iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  10. 【iCore3 双核心板】例程二十三:LAN_HTTP实验——网页服务器

    实验指导书及代码包下载: http://pan.baidu.com/s/1getgyKr iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

随机推荐

  1. [Web]flask-excel实现excel文件下载的前后端实现

    之前同事写了前端表格导出的功能, 前后端逻辑没有梳理, 导致后端代码十分臃肿. 接手之后, 重新选择了前端table插件, 从jqxGrid变更为bootstrapTable. 本来想依赖集成的tab ...

  2. Codeforces.1110F.Nearest Leaf(线段树)

    题目链接 \(dls\)讲过这道题,所以这不是线段树裸题吗,这场没打气气气气气=-= 现在是写着玩=v= \(Description\) 给定一棵\(n\)个点的树.\(q\)次询问,每次询问给定\( ...

  3. 潭州课堂25班:Ph201805201 django 项目 第二十三课 文章主页 轮播图前端实现 热门新闻推荐实现 详情页实现 (课堂笔记)

    前台代码 // 在static/js/news/index.js文件中 $(function () { // 新闻列表功能 let $newsLi = $(".news-nav ul li& ...

  4. java第七周动手动脑

    public class ParentChildTest { public static void main(String[] args) { Parent parent=new Parent(); ...

  5. 初次接触Jenkins遇到的几个问题

    1,Jenkins一直显示pending-Waiting for next available executor 网上已经提到的原因 1>,磁盘满了 2>,节点管理 刷新状态 我遇到的情况 ...

  6. Python基础-列表、元祖、字典、字符串

    列表和分组 序列概览: 数据结构是通过某种方式组织在一起的数据元素的集合.这些元素可以是数字.字符,甚至可以是其他数据结构. 在python中,最基本的数据结构是序列(sequence). 序列中的每 ...

  7. ES6_函数方法

    //2017/7/15 //Javascript 中的方法:在一个对象中绑定函数,称为这个对象的方法. */ var boy={ name:'xiaoming', birth:2007, age:fu ...

  8. 【容斥+组合数】Massage @2018acm徐州邀请赛 E

    问题 E: Massage 时间限制: 1 Sec  内存限制: 64 MB 题目描述 JSZKC  feels  so  bored  in  the  classroom  that  he  w ...

  9. arcgis 获得工具箱工具的个数

    import arcgisscripting import string; gp = arcgisscripting.create(9.3); ##多少个工具箱 toolboxes = gp.list ...

  10. 为什么大多公司不要培训班出来的JAVA程序员?

    经常听到这样的观点:很多公司不招聘培训班出来的学生.甚至于让人感觉,如果你参加过培训,那简直就是你程序员职业生涯中的一大污点. 撸码J总结了这些公司不要培训班学生的理由: 一:简历造假 网上有大量的帖 ...