创建一个NIOS环境 注意事项

前言:(先了解下硬件)

本板卡目前主要适合以下几类人:

(1)对FPGA 逻辑开发有强烈的兴趣,并且有一定的HDL基础

(2)计划采用FPGA图像架构,学习并研究图像算法的朋友

(3)准备研究使用FPGA,掌握FPGA图像算法处理架构的朋友

(4)找不到方向,想学习新知识,掌握FPGA未来动向的朋友,有决心吃苦的朋友

IP_Board Mini板卡介绍:

(1)VIP_Board Mini板卡由CrazyBingo本人开发,IC大小的板卡,麻雀虽小,五脏俱全。板卡采用Altera Cyclone IV FPGA, 以EP4CE10E22C8N为核心,实现VGA、USB、CMOS接口、SDRAM、按键、LED等资源的配置,实现基本的基于FPGA的视频图像架 构,奠定后期HDL-VIP的基础,可作为实现硬件加速视频图像VIP算法处理的工具。
    (2)关于VIP_Board Mini板卡的USB驱动安装过程,请参照《基于VIP_Board Mini的HDL-VIP开发教程.pdf》第四章“VIP_Board Mini USB驱动安装教程”。
    (3)关于更多VIP_Board Mini板卡介绍、逻辑代码、HDL-VIP代码例程实现分析,以及本软件的使用等内容,请详细阅读参照《基于VIP_Board Mini的HDL-VIP开发教程.pdf》。
    (4)更多关于FPGA软硬件需求,相关的视频图像处理算法的的指导、斧正,以及相关的交流、合作,请邮件thereturnofbingo@gmail.com,本人愿意回答任何本人愿意回答的问题,并在第一时间回复您的指正!

      板卡例程设计将在这FPGA的1W个LE的中,充分利用外围电路,榨干FPGA资源,最大程度的发挥其速度与性能,以实现最基本的视频图像VIP算法处理功能。独家编写教程:《基于VIP_Board Mini的HDL-VIP开发教程》,首先将通过例程来驱动、实现外驱动电路,简化FPGA HDL-VIP的门槛,由浅入深,逐步带领大家进入HDL-VIP开发之路。

关于VIP_Board Mini板卡的详细外设及功能介绍,如下表所示:

序号

功能模块

功能介绍

1

FPGA

采用Altera Cyclone IV系列FPGA,作为VIP的CPU

2

VGA模块

采用ADV7123实现16Bit的真彩VGA接口电路,作为视频图像的显示接口

3

SDRAM

模块

采用Hynix的16Bit SDRAM HY57V641620,共有4Banks *1024*16Bit的资源,作为视频图像的内存

4

USB模块

采用Cypress的68013方案,作为板卡与PC通信的桥片,以USB2.0实现FPGA与PC的视频图像传输功能

5

CMOS摄像头模块

支持官哥全系列摄像头模块(http://mcudiy.taobao.com),板卡暂定OV7725,最高能到640*480@60fps的图像

6

电源模块

采用MP2214 DCDC方案,USB通信兼提供电源,额定保险丝500mA电流,保护PC免受损害

7

FLASH

采用EPCS4串行SPI FLASH,4Mbit的空间足以承受1W LEs FPGA的逻辑代码

8

按键模块

(1)   1个全局复位按键

(2)   2个用户按键

9

LED灯

板载8个LED灯,采用74HC595实现3线串行配置

10

用户IO

引出20个用户IO(与VGA公用),提高了灵活性

11

JTAG接口

标准Altera JTAG接口,支持sof测试及jic固件的烧写

板卡集成VGA接口,继承了原先VIP_Board CMOS采集显示之路。不过为了解决使用VGA显示器的笨重繁琐的弊端,挣脱这原始的束缚,花了九牛二虎之力,终于设计并完善了VIP_Board的终端显示设备—通过USB传输,使用PC作为视频图像显示的终端。USB通过板载CY7C68013 USB IC链接实现,在不损失原有VGA接口的基础上,实现了基于USB2.0的视频图像传输。同时,为了降低USB视频图像算法开发的难度,加速VIP开发的进程,将重心转移到图像处理算法上,本人专门为此套件/为同类FPGA-VIP需求编写了USB_Cmmera_VIP_Panel上位机平台,软件包含了最基本的图像采集功能,主要如下:

(1)软件接受图像分辨率为640*480,默认采集并实时显示8Bit灰度图像。

(2)支持Bayer阵列数据格式的图像采集,转为RGB888并实时显示,帧率在15FPS左右。

(3)支持8Bit灰度数据格式的图像采集,并实时显示,帧率能达到30FPS。

(4)按键触发Capture,开始采集并实时显示外部输入的视频图像。

(5)按键触发Save,保存触发瞬间的画面到本机桌面,以CB_年月日时分秒.bmp命名

(6)支持垂直镜像功能,选择/取消Flip Vertical实现。

(7)支持水平镜像功能,选择/取消Flip Horizontal实现。

(8)USB数据正常连接与否,将在Help左边实时显示相关Logo标志。

(9)未完待续……

如下图为640*480分辨率、Bayer阵列的视频接收,并且竖直方向镜像模式的视频采集,当前为15FPS

板卡的FPGA代码例程,主要分为HDL-Logic,以及HDL-VIP2个部分,第一部分HDL-Logi Examples,这部分例程主要基于Verilog HDL,实现基本的逻辑外设开发功能。这部分主要例程如下表所示:

序号

文件夹

内容介绍

1

01_Board_InterfaceTest

VIP底板LED、KEY的测试

2

02_VGA_Display_Test640480

VIP底板VGA 640*480@60Hz测试

3

02_VGA_Display_Test12801024

VIP底板VGA1280*1024@60Hz测试

4

03_VGA_Char_Display_Test

VIP底板VGA字符显示实验

5

04_SDRAM_VGA_Display_Test640480

SDRAM+VGA测试Demo

6

05_CMOS_OV7725_RGB640480

SDRAM+OV7725+VGA的视频显示

7

06_USB_OV7725_RAW_Demo

OV7725+68013的USB视频显示

第二部分为HDL-VIP Example,这部分例程主要基于Verilog HDL,实现基于HDL的Video Image Processor视频图像算法的硬件加速处理。这部分主要例程序如下表所示:

序号

文件夹

内容介绍

1

01_CMOS_VIP_RGB888_YCbCr444

【VGA】RGB888转YCbCr444 VIP算法实现

2

02_CMOS_VIP_YCbCr444_RGB888

【VGA】YCbcR422转RGB888 VIP算法实现

3

03_CMOS_VIP_RAW2RGB888

【VGA】Bayer阵列转RGB888 VIP算法实现

4

04_USB_OV7725_RGB2Gray_Demo

【USB】RGB888转Gray灰度VIP算法实现

5

05_USB_OV7725_YCbCr2Gray_Demo

【USB】YCbCr422转Gyay灰度VIP算法实现

6

06-1_USB_OV7725_Gray_Mean_Filter

【USB】灰度图像的均值滤波VIP算法实现

7

06-2_USB_OV7725_Gray_Median_Filter

【USB】灰度图像的中值滤波VIP算法实现

8

07_USB_OV7725_Gray_Sobel_Demo

【USB】灰度图像的Sobel边缘检测VIP算法实现

9

08_USB_OV7725_Gray_Median_Filter_Sobel

【USB】灰度图像的中值滤波→Sobel VIP算法实现

10

09_USB_OV7725_Gray_Sobel_Erosion

【USB】灰度图像的Sobel→腐蚀运算VIP算法实现

11

10_USB_OV7725_Gray_Sobel_Erosion_Dilation

【USB】灰度图像的Sobel→腐蚀运算→膨胀运算VIP算法实现

12

11_USB_OV7725_Gray_Median_Filter

_Sobel_Erosion_Dilation

【USB】灰度图像的中值滤波→Sobel→腐蚀运算→膨胀运算VIP算法实现

 

 

好了,大家可以看到CrazyBingo开发了众多核心算法,非常值得借鉴和学习,但是基于某种原因,我们不得不进行nios项目开发中,但是CrazyBingo开发板目前还未配相关例程,所以对此我们进行了一些简单的nios例程开发,方便大家。

使用软件:Quartus II 13.1 QSYS(建议大家使用12.0或13.1以上版本)

FPGA:EP4CE10E22C8

开发板:视频图像算法处理开发板 mini VIP 2.0

操作系统:xp 32bit

大家若环境一样,可以下载软件包使用。

更多相关细节请关注我的博客:

http://www.cnblogs.com/ccjt/

http://blog.chinaaet.com/shenyae86

我的淘宝:

http://ccjt.taobao.com/

新建一个工程(文件目录:D:\altera\ext\qsys_cb 这个目录直接用)

Clk:全部相连

Onchip_MM:指令和数据均需要链接

PIO:修改名字后,注意配置方向,数据长度等。引脚需要手动引出

Timer:若需要中断,还需要链接 中断线

NIOS,配置复位,中断向量

以上配置好后,重新分配基地址,直至没有错误,就可以生产nios了

此过程大约需要几分钟。

在我的系统下 也不过 1分钟。

直接拷贝此参考即可

qsys_ext3 u0 (

.clk_clk                        (<connected-to-clk_clk>),                        //                     clk.clk

.sdram_wire_addr                (<connected-to-sdram_wire_addr>),                //              sdram_wire.addr

.sdram_wire_ba                  (<connected-to-sdram_wire_ba>),                  //                        .ba

.sdram_wire_cas_n               (<connected-to-sdram_wire_cas_n>),               //                        .cas_n

.sdram_wire_cke                 (<connected-to-sdram_wire_cke>),                 //                        .cke

.sdram_wire_cs_n                (<connected-to-sdram_wire_cs_n>),                //                        .cs_n

.sdram_wire_dq                  (<connected-to-sdram_wire_dq>),                  //                        .dq

.sdram_wire_dqm                 (<connected-to-sdram_wire_dqm>),                 //                        .dqm

.sdram_wire_ras_n               (<connected-to-sdram_wire_ras_n>),               //                        .ras_n

.sdram_wire_we_n                (<connected-to-sdram_wire_we_n>),                //                        .we_n

.led_external_connection_export (<connected-to-led_external_connection_export>), // led_external_connection.export

.spcs_external_dclk             (<connected-to-spcs_external_dclk>),             //           spcs_external.dclk

.spcs_external_sce              (<connected-to-spcs_external_sce>),              //                        .sce

.spcs_external_sdo              (<connected-to-spcs_external_sdo>),              //                        .sdo

.spcs_external_data0            (<connected-to-spcs_external_data0>),            //                        .data0

.altpll_0_c2_clk                (<connected-to-altpll_0_c2_clk>),                //             altpll_0_c2.clk

.reset_reset_n                  (<connected-to-reset_reset_n>)                   //                   reset.reset_n

);

添加nios文件,不然编译会出错。

编译完成后,开始进行软件设计

使用了EPCS、SDRAM、PIO、TIMER、PLL等等众多资源

选择空间目录(这样利于文件管理)

使用工程模版

自动生成

看到显示,说明nios已启动。

继续改进

增加:测试sdram

#include <stdio.h>

#include "system.h"

#include "string.h"

#define LEN (0x120000)

unsigned int * ram = (unsigned int *)(SDRAM_BASE+0x10000); //SDRAM地址

int main()

{

unsigned int i=0;

printf("Hello from Nios II,I'm CrazyBingo!\n");

//*

//向ram中写数据,当ram写完以后,ram的地址已经变为(SDRAM_BASE+0x10100)

for(i=0;i<LEN;i++){

ram[i] = i;

}

printf("wirte ok!\n");

//读取ram中的数据

for(i=0;i<LEN;i++){

if((i%(2560)==0) || i!=ram[i])printf("address:%08x-%08x\n",i,ram[i]);

}

printf("read ok!\n");

//*/

return 0;

}

2015-3-25

由网友:奇迹再现 整理


图像处理、物联网、fpga、stm32研究 
我的店铺:ccjt.taobao.com 

CrazyBingo mini VIP 2.0 视频开发板 NIOS移植例程(原创)的更多相关文章

  1. 【分享】iTOP4412开发板-Bluetooth移植文档

    [分享]iTOP4412开发板-Bluetooth移植文档 最近须要把Bluetooth移植到iTOP-4412 开发平台.查阅了相关资料,经过一段时间的研究.调试,最终成功的将蓝牙功能移植到了开发板 ...

  2. 在秉火STM32F429挑战者开发板上移植Huawei LiteOS指南

    昨天在B站上突然看到了一个短视频,是在正点原子的战舰V3开发板上移植华为的Huawei LiteOS操作系统,就是这个视频:看完鸿蒙OS发布会,试用华为的物联网操作系统Lite OS(B站),于是呢, ...

  3. VIP 视频开发板 上位机 测试软件 下载地址,玩转各自分辨率(V201抢先版)

    本上位机最高测试帧率 133fps 目前支持分辨率:更多分辨率支持,敬请期待或给我留言VGA:640*4801.3M:1280*10242M:1600*1200786p:1024*768 格式兼容:1 ...

  4. 最新设计打样制作完成的FPGA视频开发板VIP—V101

    设计目的:1.摄像头驱动(30w-500w mipi接口)2.VGA显示器驱动3.USB2.0视频采集4.tft液晶接口(ttl.lvds驱动)5.视频.图像处理(算法验证)6.各种视频接口处理(av ...

  5. FPGA_VIP_V101 视频开发板 深入调试小结

    FPGA_VIP_V101 推出已经有半年有余,各项功能例程已移植完毕,主要参考crazybingo例程进行移植和结合开发板设计了几个实例例程 主要包含: 硬件配置: FPGA:EP4CE6E22C8 ...

  6. 嵌入式开发 迅为4418开发板Qt移植移动4G模块第一部分

    本文转自迅为论坛:http://topeetboard.com 了解更多:https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-7744162139 ...

  7. [转载]迅为4418开发板Qt移植移动4G模块第一部分

        本文转自迅为论坛:http://topeetboard.com   平台:iTOP-4418开发板   1.首先要配置内核,这个一步和Android系统移植3G或者4G模块是一样的.一般模块的 ...

  8. u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统

    http://www.linuxidc.com/Linux/2012-09/70510.htm  来源:Linux社区  作者:赵春江 uboot最主要的功能就是能够引导内核启动.本文就介绍如何实现该 ...

  9. s5pc100开发板uboot移植

    相关软件下载地址:http://pan.baidu.com/s/16yo8Y 适用于fsc100开发板 交叉编译器arm-cortex_a8-linux-gnueabi-gcc u-boot-2010 ...

随机推荐

  1. 那些年用过的UI开发平台

    屈指算来,在我不长也不能算短的职业生涯中,接触了数代 的UI技术: MFC (Microsoft Foundation Class)- Win32上最强大的Class Library,没有之一.VS唯 ...

  2. PHP代码安全有必要了解下

    攻击者通过构造恶意SQL命令发送到数据库,如果程序未对用户输入的 SQL命令执行判断过滤,那么生成的SQL语句可能会绕过安全性检查,插入其他用于修改后端数据库的语句,并可能执行系统命令,从而对系统造成 ...

  3. [软件使用][matlab]最近经常用到的一些函数的意思,和用法

    ① cat(dim,A,B)按指定的维度,将A和B串联,dim是维度,比如1,2.1指列,2指行: ②numel(A),返回数组中,元素的个数 ③gpuArray(A),在gpu中产生一个数组A,一般 ...

  4. hdu 1863 畅通工程 (prim)

    畅通工程Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  5. 【并发编程】Java中的原子操作

    什么是原子操作 原子操作是指一个或者多个不可再分割的操作.这些操作的执行顺序不能被打乱,这些步骤也不可以被切割而只执行其中的一部分(不可中断性).举个列子: //就是一个原子操作 int i = 1; ...

  6. linux命令--文件目录操作命令

    一.命令的基本格式 1.命令提示符 [root@love2 ~]# []:这是提示符的分隔符号,没有特殊含义. root:显示的是当前的登录用户. @:分隔符号,没有特殊含义.love2:当前系统的主 ...

  7. HTML的标签认识

    <!--      html标签     h1~h6 标题标签(只有1~6,依次减小)     p 段落标签     span 无意义的行标签     div 无意义的块标签     b 加粗 ...

  8. php为什么需要异步编程?php异步编程的详解(附示例)

    本篇文章给大家带来的内容是关于php为什么需要异步编程?php异步编程的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 我对 php 异步的知识还比较混乱,写这篇是为了 ...

  9. PowerMock学习(十)之Mock spy的使用

    前言 回顾下之前学过的内容,会发现一点,如果在mock后不写when和thenReturn去指定,即便是mock调用任何方法,什么也不会做,也看不到什么效果. 划重点的时候来了,本身mock出来的对象 ...

  10. 记一次将本地工程上传到github的过程

    记一次将本地工程上传到github的过程 1.首先,进入本地工程所在文件夹,运行git init将工程初始化为git仓库: XH@DESKTOP-82MT9LU MINGW64 ~/Desktop/t ...