实验现象:

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. Lock锁与Condition监视器(生产者与消费者)。

    /*生产者与消费者第二次敲,本人表示很郁闷,以后要经常读这个 * Condition 将Object类中的监视器(wait notify notifyAll)分解成不同的对象.例如condition_ ...

  2. Python发送QQ邮件

    #!/usr/bin/python # -*- coding: UTF-8 -*-    import smtplib from email.mime.text import MIMEText fro ...

  3. git解决Could not execute editor

    我是安装k-vim后出现了这个问题,可能是vim的某些插件引起的 配置git的编辑器可解决: git config --global core.editor "/usr/bin/vim&qu ...

  4. [CF49E]Common ancestor

    [CF49E]Common ancestor 题目大意: 有两个由小写字母构成的字符串\(S\)和\(T(|S|,|T|\le50)\).另有\(n(n\le50)\)个形如\(a\to bc\)的信 ...

  5. 面试知识点——Java

    目录 Java容器 hashmap实现原理 java多线程 jvm内存模型 java 垃圾回收机制 对象存活状态检查 垃圾收集算法 垃圾收集器 内存分配与回收策略 java nio Java容器 ha ...

  6. CY7C68013 USB接口相机开发记录 - 第三天:固件修改

    上篇说了驱动怎么配置,这篇记录下对应的设备固件怎么配置.首先看下我们工程结构: 摘自官方文档AN61345 STARTUP.A51是建立工程时自动生成的文件,下面所有文件都是手动添加的.对于下面的几个 ...

  7. 去重+排序板子(set+map)

    题意: 给定n个数,去重排序后输出个数和每个数 1.map实现 #pragma GCC optimize("O2") #include<iostream> #inclu ...

  8. Vue相关开源项目库汇总(史上最全)

    偶尔在网上看到的,先保存着,以备不时之需 https://www.jianshu.com/p/e37f4dde49a2 better-scroll:是一款重点解决移动端(未来可能会考虑 PC 端)各种 ...

  9. bootstrap常见的面试题

    1.  如果让一个元素在pc端显示而在手机端隐藏,下列选项正确的是(b). A. visible-xs-8  hidden-md B. visible-md-8 hidden-xs C. visibl ...

  10. django之session与分页

    前面我们介绍了cookies,主要应用在用户登录上,保存用户登录状态,不过cookies直接放在了浏览器上,安全性较低,所以我们便引出了session功能与cookies相同,不同的是它放在了客户端, ...