课程描述

        基于FPGA/CPLD的电子系统设计技术是21世纪电子应用工程师必备的基本技能之一,而基于FPGA 的SOPC设计技术是当前电子系统设计领域最前沿的技术之一,Altera公司、Xilinx公司、Lattis公司、QuickLogic公司等全球最重要的FPGA及EDA公司都分别推出SOPC系统解决方案。SOC设计技术将是21世纪的技术发展趋势。基于FPGA的SOPC设计是我们进入SOC设计最迅速最行之有效的方案。基于SOPC(System On a Programmable Chip)的嵌入式系统设计把SOC设计和当前最流行的嵌入式系统结合起来,使之具有广泛的应用前景。

培养对象

        电子、计算机、通信、控制等相关专业本科或研究生,相关专业的技术工程师,对FPGA-SOPC系统设计及嵌入式系统开发有兴趣的开发人员。

行业需求

         工业控制,军工企事业,电信/网络/通讯,航空航天,汽车电子行业,医疗仪器,仪器仪表与电子。

基础要求

         (1) 具有数字电路、模拟电路的基础
         (2) 掌握VHDL/Verilog硬件描述语言中的一种
         (3) 基本掌握C语言程序设计

教       

         (1)《AKAE FPGA-SOPC系统设计与嵌入式系统开发教材》
         (2)《VHDL程序设计提高教程》
         (3)《AKAE FPGA-SOPC系统设计与嵌入式系统开发试验指导书》

实验器材

        AKAE SOPC 3.0 开发板

理 论 课
       18学时   

实 验 课

       12学时

理论课

学时:18学时

第一天上午
(3学时)

第1章   CPLD/FPGA 基础知识

        1.1 CPLD/FPGA 的发展现状和发展趋势,各大厂商的 CPLD/FPGA 的异同
        1.2 Altera CPLD/FPGA 集成开发工具及第三方工具介绍
        1.3 Altera FPGA 的基本结构及演变 Cyclone,Stratix,Cyclone II,Stratix II 器件
              特点介绍及应用
        1.4 CPLD/FPGA 的设计流程简介,及其各个步骤之间的关系
        1.5 CPLD/FPGA 的配置电路 JTAG/PS/AS 及 CPU 加载电路与时序要求
        1.6 可编程逻辑常用设计思想和技巧
               1.6.1 模块化设计思想
               1.6.2 串并转换
               1.6.3 流水线操作
               1.6.4 异步时钟域数据同步

第2章   硬件描述语言(VHDL)设计提高

        2.1 VHDL设计提高
               2.1.1 时钟设计思路与时钟描述方法,时延电路处理,全局信号处理
               2.1.2 信号( Signal )与变量 (Variable) 的区别
               2.1.3 进程( Process )管理方法
               2.1.4 VHDL 程序设计的误区
               2.1.5 双向数据总线问题和三态电路设计
               2.1.6 有限状态机的设计与优化
               2.1.7 组合逻辑的优化设计
               2.1.8 时序逻辑的优化设计

第一天下午
(3学时)

第3章   Quartus II软件应用与提高

        3.1 Quartus II软件使用入门及注意事项
               3.1.1 Quartus II软件简介
               3.1.2 Quartus II工程文件的建立
               3.1.3 Quartus II工程的编译、仿真、下载
               3.1.4 实验分析- Quartus II工程的编译、仿真、下载
        3.2 设计输入方法 (原理图,HDL语言,网表输入,宏模块,IP Core)
               3.2.1 原理图输入实例讲解及注意事项
               3.2.2 HDL语言输入实例讲解及注意事项
               3.2.3 宏模块,IP Core输入实例讲解及注意事项
               3.2.4 原理图、HDL语言、宏模块混合输入实例讲解及注意事项
        3.3 FPGA优化设计
               3.3.1 首次编译的约束和设置
               3.3.2 资源利用优化
               3.3.3 时钟优化
        3.4 时序约束与时序分析
               3.4.1 时序约束与时序分析基础
               3.4.2 时序约束的常用方法
               3.4.3 高级时序分析
        3.5 时钟管理与锁相环应用
               3.5.1 全局时钟管理
               3.5.2 锁相环的设置和应用
               3.5.6 实验分析-锁相环倍频、分频、相移的实现
        3.6 FPGA的功耗估计软件及应用
        3.7 LogicLock ( 逻辑锁定 ) 技术与实例分析
               3.7.1 逻辑锁定技术简介
               3.7.2 逻辑锁定区域
               3.7.3 逻辑锁定设置
        3.8 Signaltap II 在线逻辑分析仪调试技术与实例分析
               3.8.1 嵌入式逻辑分析仪简介
               3.8.2 设置触发条件和总线的数据格式               
               3.8.3 SignaltapII的分析操作
               3.8.4 实验-SignaltapII的下载调试
        3.9 综合实验-基于FPGA的直接数字频率合成器(DDS)的设计
               3.9.1 直接数字频率合成器(DDS)的原理分析
               3.9.2 定制波形ROM的设计和“MIF”文件的C语言生成方法
               3.9.3 频率合成加法器的设计
               3.9.4 频率字输入控制器的设计
               3.9.5 DA转换控制器的设计
               3.9.6 各部分模块的综合调试、下载、实验

第二天上午
(3学时)

第4章   SOPC技术入门

        4.1 基于FPGA的SOPC设计技术
               4.1.1 SOC技术发展
               4.1.2 基于FPGA的SOPC技术简介
        4.2 软硬协同设计技术
               4.2.1 软硬协同设计的概念
               4.2.2 软硬协同设计的常用方法
               4.2.3 基于FPGA的SOPC设计软硬件协同设计方法
               4.2.4 实例讲解
        4.3 SOPC Builder环境介绍
               4.3.1 SOPC Builder结构介绍
               4.3.2 SOPC Builder中的组件地址分配及注意事项
               4.3.3 实例分析-NIOS最小系统的建立
        4.4 NIOS IDE软件开发环境
               4.4.1 NIOS IDE 结构特点
               4.4.2 工程属性的设置既注意事项
               4.4.3 实验-“Hello World!”工程文件的建立
        4.5 实例实验-第一个程序“Hello World!”
               4.5.1 在Quartus II建第一个工程
               4.5.2 在SOPC Builder中定制最基本的NIOS微处理器系统
               4.5.3 在NIOS IDE创建第一个程序“Hello World!”
               4.5.4 下载硬件和软件到FPGA中运行

第5章   SOPC技术提高-微处理器系统和指令系统的定制

        5.1 NIOS II 软核处理器的结构分析与配置
               5.1.1 各公司软核处理器的比较
               5.1.2 NIOS II处理器的结构和特点
               5.1.3 NIOS II处理器的定制
        5.2 NIOS II 指令系统的设计与定制
               5.2.1 NIOS II 指令系统的结构特点
               5.2.2 NIOS II 指令系统的自定义接口
               5.2.3 自定义指令系统的接口信号定义
        5.3 硬件浮点乘法指令的设计和配置
               5.3.1 硬件浮点乘法的逻辑设计
               5.3.2 硬件浮点乘法指令的接口信号逻辑设计
               5.3.3 硬件浮点乘法指令的集成及软件调用
               5.3.4 实验-硬件浮点乘法指令的硬件加速对比实验
        5.4 CRC指令的设计和配置
               5.4.1 硬件CRC校验的逻辑设计
               5.4.2 硬件CRC校验指令的接口信号逻辑设计
               5.4.3 硬件CRC校验指令的集成及软件调用
               5.4.4 实验-CRC指令的调用

第二天下午
(3学时)

第6章   SOPC技术提高-基于Avalon总线接口的IP Core 的设计

        6.1 Avalon总线结构分析
               6.1.1 常用片内总线及Avalon总线介绍
               6.1.2 Avalon总线的几种接口方式
               6.1.3 寄存器外设和流模式外设的总线接口分析
        6.2 外设描述文件“.ptf”文件结构分析与设计
               6.2.1 通用SRAM接口分析与设计
               6.2.2 常用SRAM的接口信号分析
               6.2.3“.ptf”文件中的接口设置
               6.2.4 SRAM接口的集成与设计验证
               6.2.5 实验-将自定制的通用SRAM集成到系统中
        6.3 PWM控制器 IP Core的设计
               6.3.1 PWM的逻辑设计与验证
               6.3.2 PWM的寄存器设计
               6.3.3 Avalon总线接口时序的设计
               6.3.4 PWM外设的驱动程序设计与集成
               6.3.5 实验-自定制PWM控制器控制电机实验
        6.4 流模式LCD/VGA控制器的 IP Core 的设计
               6.4.1 SDRAM内存共享显存的LCD/VGA控制器总体设计
               6.4.2 流模式外设DMA操作和设计注意事项
               6.4.3 LCD/VGA的逻辑设计与验证
               6.4.4 LCD/VGA的寄存器设计
               6.4.5 流模式外设接口FIFO设计与Avalon总线接口时序
               6.4.6 LCD/VGA外设的驱动程序设计与集成
               6.4.7 实验-利用VGA控制器和NIOS编程在VGA接口显示器上动态显示图片
        6.5 PS/2控制器 IP Core 的设计
               6.5.1 PS/2的逻辑设计与验证
               6.5.2 PS/2的寄存器设计
               6.5.3 Avalon总线接口时序的设计
               6.5.4 PS/2外设的驱动程序设计与集成
               6.5.5 实验-在VGA显示器上显示移动的鼠标光标

第7章   SOPC系统的板级定制和PCB电路板设计

        7.1 SOPC系统总体分析与设计
        7.2 FPGA的信号完整性及常用I/O电平标准
        7.3 功耗分析与热设计
        7.4 SOPC系统配置及调试部分电路设计
        7.5 SOPC系统电源完整性设计
        7.6 SDRAM及SRAM的选型与设计
        7.7 FLASH存储器的选型和设计
        7.8 FPGA高速电子系统的 PCB 布线和注意事项
        7.9 自定制板的SOPC Builder系统集成
               7.9.1 为什么要将系统Porting 到自定制板
               7.9.2 Programming Design NIOS系统的建立和设定
               7.9.3 Programming Design 工程建立的建立和设定
               7.9.4 Programming Design 工程的注意事项
               7.9.5 实验-利用Programming Design将“ELF”文件下载到自定制板的
                         FLASH中

第8章   NIOS常用外设及其C语言编程

        8.1 硬件抽象层(HAL)结构分析
               8.1.1 硬件抽象层(HAL)的结构特点
               8.1.2 硬件抽象层(HAL)的修改及设备驱动程序在HAL中的集成
        8.2 通用I/O口 PIO
               8.2.1 PIO外设的设定
               8.2.2 PIO外设的寄存器定义
               8.2.3 PIO的软件操作及实例
        8.3 串口UART
               8.3.1 UART外设的设定
               8.3.2 UART外设的寄存器定义
               8.3.3 UART的软件操作及实例
        8.4 定时器编程
               8.4.1 Timer外设的设定
               8.4.2 Timer外设的寄存器定义
               8.4.3 Timer的软件操作及实例
        8.5 Common FLASH Interface接口编程
               8.5.1 CFI接口的设定
               8.5.2 CFI外设的寄存器定义
               8.5.3 CFI的软件操作及实例
        8.6 True模式Compact Flash接口编程
               8.6.1 CF卡的特点及应用
               8.6.2 实模式IDE接口CF卡的接口控制器的寄存器的定义
               8.6.3 CF卡的接口控制器的软件操作和实例
        8.7 NIOS中断系统及其编程
               8.7.1 NIOS中断系统介绍
               8.7.2 NIOS中断系统设定
               8.7.3 NIOS中断系统的软件设计和实例分析
        8.8 DMA控制器及其编程
               8.8.1 DMA操作的原理及意义
               8.8.2 DMA控制器的寄存器定义
               8.8.3 DMA控制器的软件编程及实例
        8.9 多CPU协同工作及数据共享
               8.9.1 Avalon总线的多主共享结构
               8.9.2 多NIOS处理器共享总线的设定
               8.9.3 多NIOS处理器的协同处理及注意事项
               8.9.4 多NIOS处理器间的数据共享
               8.9.5 软件编程及实例分析

第三天晚上
(3学时)

第9章   SOPC与嵌入式系统开发

        9.1 常用嵌入式操作系统的介绍
               9.1.1实时操作系统的若干基本概念辨析
                        资源;临界区;任务;进程调度;内核概念;可重入函数;优先级反转;
                        中断的时间参数;实时内核定义;信号量机制;消息队列;多任务管理;
               9.1.2 UC/OS II的结构和特点
               9.1.3 μClinux 的结构和特点
               9.1.4 Vxwork的结构和特点
               9.1.5 WinCE的结构和特点
        9.2 uC/OS-II 实时操作系统原理和在NIOS上的应用
               9.2.1 uC/OS-II 概述;uC/OS-II 与其他操作系统之比较异同;
               9.2.2 内核函数功能接口分析(内核数据结构/系统调用/中断处理/移植相关代码等)
               9.2.3 基于uC/OS-II内核的应用程序设计(多任务编程/进程间同步机制/系统时
                         间函数等)
               9.2.4 NIOS IDE对uC/OS-II的支持
               9.2.5 NIOS IDE 中uC/OS-II的属性设定及含义
               9.2.6 基于uC/OS-II多任务程序的设计方法
               9.2.7 实验-一个简单的多任务程序设计
        9.3 嵌入式GUI的原理和UC/GUI系统在NIOS系统上的移植
               9.3.1 UC/GUI的结构分析
               9.3.2 UC/GUI在PC上的模拟器应用
               9.3.3 UC/GUI在256色LCD控制器及NIOS上的移植源代码分析
               9.3.4 基于UC/GUI的嵌入式系统应用程序设计
               9.3.5 实验-波形显示实验
        9.4 文件系统在NIOS上的应用
               9.4.1 文件系统的结构和特点
               9.4.2 几种常用文件系统的特点
               9.4.3 Read-only文件系统在NIOS上的应用
               9.4.5 Read-only文件系统实例分析
        9.5 μClinux在NIOS上的移植与应用
               9.5.1 Microtronix公司的μClinux开发包简介
               9.5.2 Linux常用的指令
               9.5.3 NIOS SDK Shell中对μClinux的支持
               9.5.4 μClinux Kernel工程的设置和编译
               9.5.5 Filesystem工程的设置和编译
               9.5.6 “Hello World!”程序在μClinux上的运行
               9.5.7 μClinux在自定制SOPC板上的移植介绍(待定)
               9.5.8 μClinux中FLASH、CF卡驱动程序的移植修改
               9.5.9 μClinux中启动代码的修改
               9.5.0 μClinux的重新编译和在自定制SOPC板上的移植调试

第四天晚上
(3学时)

第10章   工程实例的分析和设计

        10.1“频谱分析仪”的总体设计和软硬件协同设计
               10.1.1 频谱分析仪的主要作用与技术参数
               10.1.2 频谱分析仪的软硬件协同设计
               10.1.3 频谱分析仪的硬件总体设计和软件总体设计
        10.2“频谱分析仪”的硬件设计
               10.2.1 NIOS微处理器系统的设计
               10.2.2 硬件AD控制器的设计
               10.2.3 硬件FIR滤波器的设计
               10.2.4 硬件FFT的设计
               10.2.5 FIFO的设计与定制
               10.2.6 Avalon总线接口LCD控制器的设计
        10.3 “频谱分析仪”的软件设计
               10.3.1 多任务操作系统uC/OS-II任务的划分
               10.3.2 显示界面GUI的设计
               10.3.3 频谱分析算法的设计实现
               10.3.4 波形数据的FLASH存储管理
        10.4 “频谱分析仪”的总体调试
               10.4.1 频谱分析仪SOPC硬件模块的分析与调试
               10.4.2 频谱分析仪SOPC软件工程的建立与调试

实验课

学时:12学时

综合实验一Quartus II软件应用与优化设计

第五天晚上
(3学时)

        基于FPGA的直接数字频率合成器(DDS)的设计

综合实验二定制指令

第六天晚上
(3学时)

        硬件浮点乘法指令和CRC指令的设计、集成和编程

综合实验三SOPC技术提高-基于Avalon总线接口的IP Core 的设计

第七天晚上
(3学时)

        利用自定义VGA控制器实现VGA接口显示器上的动画显示

综合实验四工程实践

第八天晚上
(3学时)

        工程实践
Advertisements