Skip to content

Latest commit

 

History

History
278 lines (179 loc) · 10.8 KB

File metadata and controls

278 lines (179 loc) · 10.8 KB

全国大学生集成电路创新创业大赛

集成电路大赛logo

1. 赛题介绍:Arm 片上系统设计挑战赛

参赛要求:本科生组/无限制组

赛题内容:

利用Arm Cortex-M3 DesignStart处理器在可编程逻辑平台上构建片上系统,实现图像采集,图像处理和人机交互功能,观察并优化系统的性能。

使用ArmCortex-M3 DesignStart Eval提供的处理器IP,在你的可编程逻辑平台上构建简单的Cortex-M3片上系统。 系统应至少包含:

ArmCortex-M3 DesignStart处理器;

利用片上或板上资源实现的ROM与RAM;

与芯片外部引脚连接的GPIO外设。

使用KeilμVision工具编写并生成软件程序,实现GPIO输出引脚跟随GPIO输入引脚变化。将对应的输入、输出引脚连接至板上开关与LED,确认程序正确运行。

如上图,在FPGA中编写图像传感器的接口和数据缓存,作为Cortex-M3片上系统的一个外设,并编写软件程序,将图像传感器的采集结果显示在开发平台自带的液晶屏上。

在Cortex-M3上编写软件程序,识别摄像头拍摄到的车牌中的5位数字并显示在LCD屏上。可以在FPGA中设计硬件加速器,帮助Cortex-M3加快图像识别的速度。

利用以上实现的系统,进行20张图像识别挑战赛:

测试图片由“模型车牌生成器”生成;参赛队自制20张不同的车牌,保持原大小复制到白底Power Point中,每页一张。模型车牌由XX.YYYYY组成,其中YYYYY为5位纯数字,此次识别就仅限于这个5个数字。

测试时,启动PPT演示计时功能,摄像头拍摄屏幕上的“模型车牌”(拍摄位置由参赛队自由选择),识别并在LCD屏上显示其中的5位数字,同时给出识别完成信号(蜂鸣或亮灯),人工切换到下一张测试,所有测试完成后计时停止。计时停止后,参赛队在LCD屏上显示所有识别结果供裁判核对正确率。

最终得分以速度排序,时间越短的参赛队成绩越好。但识别错误3张以上取消比赛成绩。在3张错误以内,每错一张时间罚5秒。

作品提交:

设计报告:

作品展板(团队介绍、项目心得体会、项目研发情况、技术创新点、后续工作)

作品PPT(团队介绍、项目心得体会、项目研发情况、技术创新点、后续工作)

系统设计方案

功能仿真及测试结果图

系统展示图片、或视频

设计数据:

系统原理图、软硬件代码,仿真和测试结果;

现场测试比赛

评分规则:

内容 分值 评分要求
1. 完成Cortex-M3片上系统的基础设计 20分 1. 正确获得Arm Cortex-M3DesignStart Eval IP,正确使用内部总线连接存储器与外设;2. 在硬件平台上实现系统,并正确编译、下载软件程序, 现场编程调试,通过按键改变LED等的闪烁方式或频率证实系统运行情况;
2. 完成图像传感器芯片的数字接口设计,并作为与Cortex-M3片上系统的外设 20分 1. 详实规范的设计文档2. 编写软件成功实现图像采集;3. 数字接口设计的功能仿真结果等可视化成果;
3. 图像识别算法的实现 30分 1. 图像识别算法的详实设计方案2. 图像处理协处理器的功能仿真结果等可视化成果
4. 现场演示 30分 1. 现场演示图像识别功能2. 追求更高的识别正确率和速度

本题目可选用MPS2开发,但不限于此平台,队伍可自行选择使用类似的硬件平台开发。但所使用板卡的官方售价不得高于MPS2,且FPGA主芯片限于Altera的Cyclone、Max系列,和Xilinx的Spartan、Artix系列。不得采用其他中高端系列FPGA芯片。

技术讨论区:百度贴吧“全国大学生集成电路大赛

2. 约束(Nexys4)

Pmod Ports

img

Pmod JA Pmod JB Pmod JC Pmod JD Pmod XDAC
JA1: C17 JB1: D14 JC1: K1 JD1: H4 JXADC1: A13 (AD3P)
JA2: D18 JB2: F16 JC2: F6 JD2: H1 JXADC2: A15 (AD10P)
JA3: E18 JB3: G16 JC3: J2 JD3: G1 JXADC3: B16 (AD2P)
JA4: G17 JB4: H14 JC4: G6 JD4: G3 JXADC4: B18 (AD11P)
JA7: D17 JB7: E16 JC7: E7 JD7: H2 JXADC7: A14 (AD3N)
JA8: E17 JB8: F13 JC8: J3 JD8: G4 JXADC8: A16 (AD10N)
JA9: F18 JB9: G13 JC9: J4 JD9: G2 JXADC9: B17 (AD2N)
JA10: G18 JB10: H16 JC10: E6 JD10: F3 JXADC10: A18 (AD11N)
Pmod JA
JA1: C17 spi_rtl_ss_io[1] (CS2)
JA2: D18 spi_rtl_ss_io[0] (CS1)
JA3: E18 spi_rtl_io1_io (MISO)
JA4: G17 GPIO_lcd[2] (BLK)
JA7: D17 GPIO_lcd[0] (DC)
JA8: E17 GPIO_lcd[1] (RES)
JA9: F18 spi_rtl_io0_io (MOSI)
JA10: G18 spi_rtl_sck_io (CLK)

SPI LCD 接口

Pmod JB
JB1: D14
JB2: F16 nTRST
JB3: G16 TDO
JB4: H14 TDI
JB7: E16
JB8: F13 nSRST
JB9: G13 SWDIO
JB10: H16 SWCLKTCK
Pmod JC
JC1: K1 PWDN
JC2: F6 PCLK
JC3: J2 D6
JC4: G6 D4
JC7: E7 FLASH
JC8: J3 D7
JC9: J4 D5
JC10: E6 D3
Pmod JD
JD1: H4 D2
JD2: H1 D0
JD3: G1 CAM_SDA
JD4: G3 CAM_SCL
JD7: H2 D1
JD8: G4 RST
JD9: G2 HREF
JD10: F3 VSYNC

3. 简介

3.1 工程目录结构

.
├── backup
├── docs
│   ├── my
│   ├── nexys4ddr
│   └── 中期
├── hardware
│   └── m3_for_arty_a7
│       ├── block_diagram
│       ├── constraints
│       ├── ip_repo
│       ├── m3_for_arty_a7
│       └── testbench
├── matlab
├── software
│   ├── arm_xilinx_file
│   ├── flash_downloader
│   └── m3_for_arty_a7
│       ├── Build_Keil
│       ├── cmos
│       ├── cmsis
│       ├── gpio
│       ├── iic
│       ├── image
│       ├── main
│       ├── sdk_workspace
│       ├── spi
│       ├── uart
│       └── vdma
├── tools
│   └── 模型车牌生成器
└── vivado
    ├── Arm_ipi_repository
    └── Arm_sw_repository

4. 准备工作

4.1 安装板卡文件

如果打开工程后出现如下警告:

error_message

表明缺少板卡文件,本工程使用的开发板为 Nexys4 DDR ,具体板卡文件安装方法参考 Vivado板卡文件安装教程

4.2 添加 IP 目录

初次打开vivado工程需要添加 IP 目录,具体目录如下:

./vivado/Arm_ipi_repository
./vivado/My_repo
vivado_library

其中第三个IP目录为Digital制作的IP,下载地址:[email protected]:Digilent/vivado-library.git

添加IP目录后,需要Refresh目录:Tools → Settings → IP → Repository → Refresh all,然后Report IP Status:Report → Report IP Status,如果有过期 IP ,需要Upgrate。

4.3 添加 Arm software repository

  1. 打开 Vivado;

  2. File → Lanuch SDK;

  3. 选择路径:Exported location to V:/software and the default Workspace to V:/software/m3_for_arty_a7/sdk_workspace

    将 "V:" 替换为自己的实际路径

    Lanuch SDK

  4. SDK打开后选择:Xilinx → Repositories,添加 V:vivado/Arm_sw_repository/Global Repositories

    将 "V:" 替换为自己的实际路径

    1559139877749

    1559139915717

5. 开始使用

5.1 修改硬件工程

  1. 打开vivado,对硬件工程进行修改;

  2. 修改完成后,点击Validate Design验证Block Design是否正确;

    Validate Design

  3. 之后生成 HDL Wrapper;

    Create HDL Wrapper

  4. 根据需要,修改约束文件;

  5. 点击 Generate Bitstream,生成 bit 流文件;

  6. bit流文件生成完成后,导出硬件文件:File→ Export→ Export Hardware...,导出路径不要选择默认路径!

    1559139272259

    1559139347547

5.2 修改软件工程

  1. Launch SDK,不要选择默认路径!

    1559139485231

    1. 重新生成BSP文件,需要注意stdinstdoutsleep_timer的配置是否正确。首先点击Modify this BSP’s Settings,确认stdinstdoutsleep_timer的配置是否正确,后点击 Regenerate BSP Sources,重新生成BSP。

      1559140136695

      1559139758571

  2. 由于Keil和SDK的文件结构稍有差异,需要将xpseudo_asm_rcvt.hxpseudo_asm_rcvt.cV:/vivado/Arm_sw_respository/CortexM/bsp/standalone_v6_7/src/arm/cortexm3/armcc复制到V:/software/m3_for_arty_a7/sdk_workspace/standalone_bsp_0/CORTEX_M3_0/include

    由于一部分IP的驱动中一些文件也需要修改,所以已将修改好的文件放在V:\software\arm_xilinx_file,因此这一步只需要执行V:/software/regenerate_bsp.bat这个批处理文件,即可将需要的文件复制到 Keil MDK 工程下。

  3. 之后就可以打开 Keil MDK 工程,编写软件程序部分了,Keil 工程位于V:\software\m3_for_arty_a7\Build_Keil\m3_for_arty_a7.uvprojx

6. 实物

-25024690176dca5f