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

相关文章

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,