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

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁