2.1 开发概述和FPGA逻辑设计

2024-04-27 04:58

本文主要是介绍2.1 开发概述和FPGA逻辑设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

\qquad 在HD-GR接收机中,微处理器是软核类型的(NIOS II),在一片Altera FPGA (U1)中分配。NIOS II软核及其软件与基带硬件逻辑一道共享这片FPGA资源。因此,HD-GR接收机中的很大一部分可以在一个公共平台上进行创建和编程。Altera为FPGA硬件逻辑设计和NIOS II软件编程这两个紧密联系的领域提供了一个基于PC的开发环境:

  • Altera Quartus II FPGA开发包,包括:逻辑综合、布局和走线、时序分析、信号跟踪机制、等等。这是一个功能丰富的系统,为设计者提供了一个从HDL源码到硅片产生的集成平台。
  • NIOS II集成开发环境(IDE),它的前身是许多软件开发员熟悉的Eclipse平台。它允许编译和调试嵌入式处理器NIOS的C和C++源代码。

使用这些开发工具,你可以对HD-GR接收机的参考设计进行编译、连接、逻辑/软件仿真;如果你拥有一套HD-GR接收机板卡,还可以对参考设计进行实际调试、优化、修改,甚至彻底重新设计。凡此种种,就是本章所称的开发。

\qquad Altera还在其网站www.altera.com上提供了大量文档和支持。理解Quartus II软件的起点是下载并阅读手册(Altera Corporation Inc,2008)。NIOS软件开发环境也提供了类似的手册(Altera Corporation Inc,2008)。本章对如何将这些工具应用于HD-GR接收机板卡上予以一般性说明,但不涉及创建、配置Quartus II项目和构建、添加组件的具体步骤。

\qquad 另外,本章不讨论基带数字化硬件(即2.3.4小节中的外围组件“GNSS基带模块”)的实现细节,也不讨论运行在NIOS II CPU中的基带控制软件和导航软件的具体实现,它们作为重点内容,将分别安排在随后两章讨论。

2.1.1 从参考设计开始

\qquad Altera Quartus II FPGA软件为逻辑设计提供了开发环境,包括设计、综合、布局、走线、时序分析、仿真、以及器件编程。有许多选项可以通过JTAG端口和I/O引脚来进行跟踪和调试设计。

\qquad Quartus II软件允许用户创建项目,所有逻辑文件(包括NIOS CPU和外围设备)都能以一种容易使用的层次结构指派到项目中。

\qquad HD-GP接收机提供了一个预先构建和经过测试的Quartus II项目。这个参考设计旨在展示如何将各种外围设备连接和集成到NIOS CPU中。它们可以加载到板中按原样运行,也可以复制和修改以添加或删除功能。有关如何通过JTAG口(JTAG)使用USB blaster将编译后的图像下载到Cyclone-IV FPGA (U1)中的信息,请参阅Quartus II开发手册。

\qquad 这个参考设计的工程名为AGRS_GP_1,工程文件为AGRS_GP_1.qpf。AGRS_GP_1包含了HD-GP接收机能够连接到一个NIOS CPU中去的几乎所有信号选项,参见SOPC Builder配置界面(图2-1)中显示的系统组件。

\qquad 硬件设计师使用SOPC Builder创建NIOS II系统CPU、外围设备、以及存储器,并为它们提供完善的软件描述信息。SOPC Builder所生成的软件开发包(SDK) 包括一个名为System.h的头文件,其中包含了这些描述信息以及相应的宏指令。软件通过使用这些宏指令对硬件进行访问。有关NIOS II系统设计和实践的细节可参考“NIOS II设计和实践”、“NIOS II软件开发”等文档。

\qquad SOPC Builder使用“组件”这个词描述系统中的硬件模块。在NIOS II软件开发文档中,SOPC Builder组件指的是器件,如:外围设备或存储器。每个外围设备或存储器用一个软件组件来描述,以允许描述一个通过Avalon总线连接到NIOS II CPU的用户接口。对此,“NIOS II外围组件”一节进行了更详细描述,并用GNSS基带模块给出了一个自定义外围组件的示例。

\qquad 在图2-1所示的SOPC系统中,除主角NIOS II CPU和通用组件[System ID、定时器、时钟管理单元(ALTPLL) 、JTAG UART、以及EPCS控制器]外,还包括组件SDRAM控制器、GNSS基带模块、UART(RS232 Serial Port)、SPI (3 Wire Serial)、PIO等,“NIOS II外围组件”一节将专门讨论它们。

图2-1 AGRS_GP_1项目中的SOPC系统组件

图2-1 AGRS_GP_1项目中的SOPC系统组件

2.1.2 顶层模块和复位模块

\qquad AGRS_GP_1工程的顶层模块为AGRS_GP_1(文件名AGRS_GP_1.v),复位模块为sys_ctrl(文件名sys_ctrl.v)。顶层模块AGRS_GP_1实例化了包括NIOS II CPU和sys_ctrl在内的次一级模块,实现了FPGA (U1)与外部信号的接口,并对模块信号进行了互连。复位模块sys_ctrl实现了系统延迟复位的逻辑。参见图2-2。

图2-2 顶层模块AGRS_GP_1原理图

图2-2 顶层模块AGRS_GP_1原理图

2.1.3 引脚分配

\qquad 图2-3中的引脚分配指定了HD-GR-1底板上的FPGA芯片(U1)的I/O引脚(第3列,Location)与顶层模块AGRS_GP_1接口信号(第1列,To)的连接关系,从而指定了接口信号与布线到芯片I/O引脚的那些底板信号之间的连接关系;其中,每个接口信号的名称对应于底板上某个器件的一个信号。

图2-3 EP4CE22芯片引脚分配

图2-3 EP4CE22芯片引脚分配

2.1.4 时钟信号

\qquad AGRS_GP_1项目使用来自射频前端HD-2769-2RF-2的16.368 MHz时钟信号(图2-3中的引脚max2769_1_clk)作为SOPC系统的输入时钟(clk)(参见图2-1中的Clock Settings)。虽然可以选择来自HD-GR-1底板的其它时钟作为SOPC系统的输入时钟,如:图2-3中的引脚clk1或clk2,但对于我们的基带逻辑而言,必须使用来自射频前端的正确时钟。在AGRS_GP_1项目中,FPGA内部的时钟连接情况如图2-4所示。16.368 MHz输入时钟也被馈送到使用向导工具SOPC Builder定义的一个FPGA片上锁相环(atlpll_0) 中。这个锁相环有三个输出(atlpll_0_c0, atlpll_0_c1, atlpll_0_c2),项目中都设置为输入的6倍(98.208MHz)。atlpll_0_c0用于驱动NIOS CPU和除SDRAM控制器(sdram)外的外围组件。atlpll_0_c1和atlpll_0_c2分别用于为sdram组件和底版上的SDRAM芯片(U72)提供时钟信号。atlpll_0_c1和atlpll_0_c2必须同频,但通常不同相(具有相位延迟),以保证NIOS CPU能够正确读/写SDRAM。项目中将atlpll_0_c2相对atlpll_0_c1的相位延迟设定为210°,这是对项目进行时序约束和分析后调整的数值。

图2-4 FPGA时钟系统

图2-4 FPGA时钟系统

这篇关于2.1 开发概述和FPGA逻辑设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/939572

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安