首页资源分类嵌入式系统 > SOPC技术实验讲义

SOPC技术实验讲义

已有 445117个资源

下载专区

文档信息举报收藏

标    签:嵌入式

分    享:

文档简介

又要打一遍名字~这是一份讲义

文档预览

SOPC 技术实验讲义 ---- 使用 SOPC Builder 和 NiosII 进行系统设计 ALTERA 公司中国大学计划部 杭州康芯电子有限公司 2005 年 8 月 目录 实验一、建立 NIOSII 嵌入式处理器硬件系统 1.1 设计模型准备 1、 准备示例文件 2、 启动 QuartusII5.0 3、 选定目标器件与设定引脚锁定 4、 开始建立 NiosII 嵌入式系统 1.2 加入组件 1、加入 NiosII CPU Core 2、加入 JTAG UART 3、加入定时器 Timer 4、加入键输入 I/O 口 5、加入 8 发光管 I/O 口 6、加入 2 个 7 段数码管 I/O 输出口 7、加入 Avalon 三态总线桥 8、加入外部 Flash 9、加入系统 ID 组件 10、加入 EPCS Serial Flash Controller 组件 11、加入外部 SRAM 组件 1.3 NiosII 系统生成前设置与系统生成 1、 地址自动分配设置 2、 复位地址和程序运行区域置 3、 系统文件生成 1.4 NiosII 硬件系统生成 1、 加入原理图模块 2、 加入锁相环 3、 编译 实验二、NIOSII 软件设计与运行流程 1、 向 FPGA 下载配置文件 2、 进入集成开发环境 IDE 3、 建立 C 软件开发工程 4、 编译运行 C 程序 5、 观察运行结果 6、 单步/跟踪调试运行 7、 运行另一个示例程序 8、 运行用户程序 实验三、加入用户自定义组件设计 1、入用户逻辑模块 2、生成和编译 3、锁定 FPGA 控制电机的引脚 4、建立软件工程 5、运行和调试软件 5、加入电机测速电路 6、运行软件 实验四、加入用户自定义指令设计 实验五、FLASH 编程下载 实验五、设计 DSP 处理器功能系统 附录:GW48 EDA/SOPC 系统相关表格与电路 2 实验一、建立 NiosII 嵌入式处理器硬件系统 设计流程的第一步,是设计规划。需要根据系统设计要求,划分好各个软硬件模块。完整的基于 NiosII 的 SOPC 系统是一个软硬件复合的系统,在开发时可以分为硬件、软件两个部分。对于通常的嵌入式系统开发,往往 CPU 是 不可更改的,因而外围设备的变动也受到 CPU 的限制,因而通常的嵌入式开发更多的是 PCB 设计及软件开发。但 NiosII 是一个可灵活定制的 CPU,它的外设是可选的 IP 核或自定制逻辑,可以根据系统设计要求,通过 SOPC Builder 向导式的界面定制裁剪得当的 SOPC 系统。NiosII 的开发流程分为两个大部分:硬件开发与软件开发。 NiosII 的硬件设计流程就是为了定制合适的 CPU 和外设,在 SOPC Builder 和 QuartusII 中完成。在这里可以灵 活定制NiosII CPU 的各个特性甚至指令,可以使用Altera 提供的大量的IP Core 来加快开发者开发NiosII 外设的速度, 提高外设的性能,也可以使用第三方的 IP Core,或者使用 VHDL、Verilog 来自己定制外设。完成 NiosII 的硬件开发 后,SOPC Builder 可以帮助开发者生成相应的 IDE 或 SDK(软件开发包)。这是由于在硬件开发中的 NiosII CPU 及 其外设构成的系统是自定制的,存储器、外设地址的映射等都各不相同,需要的 IDE 也应是专有的,不过不用开发 者操心,SOPC Builder 自动生成 IDE。NiosII 嵌入式系统是自己定制的、裁剪过的,可能受到硬件的局限会小一些。 开发者可以使用汇编或 C 语言,甚至 C++来进行嵌入式程序设计。当软硬件开发都完成了,接下就需要在 NiosII 开 发板上实现一个要求设计的系统的原型。在这个软硬件原型上,运行整个系统,测试是否达到要求。 本节将以一个简单的基于 NiosII 的 SOPC 系统的开发过程来详细讲述 NiosII 硬件开发的具体流程。 这个基本的 SOPC 系统大致可以分为三个部分:FPGA 部分、存储器部分和外围元件部分。FPGA 部分是建立 在 FPGA 内的,核心是 NiosII CPU Core。FPGA 内部含:一个 NiosII CPU 核;连接于 NiosII 核的是下载和调试程序 的 JTAG_UART 通信模块、一个内部定时器、一个 Avolon 总线控制器和一些 PIO 外围接口模块。为使 Nios 系统正 常工作,在 FPGA 外围必须接有一些控制键、几个发光管和数码管以及 SRAM、Flash ROM 和实验用电机。 本实验硬件要求: • 将 ByteBlaster II, Byte Blaster MV, 或 USB-Blaster 与 计算机相连,另一端与 SOPC 开 发板上的 JTAG 口相连,本项实验的 SOPC 开发系统是采用清华大学电工电子实验中心 的 GW48-SOPC 实验系统(康芯公司),与本实验相关的使用方法请参考附录。 • 打开实验系统上的开关电源。 1.1 设计模型准备 1、 准备示例文件。在计算机硬盘上,如 E 盘上建立一个文件夹,作为本项实验的工程文件的存放位置,并以 此开始,利用 QuartusII 建立一个工程项目,选择目标器件(如 Cyclone FPGA),再用 SOPC Builder 创建 NiosII 组件 模型,然后生成硬件描述文件,锁定引脚后,进行全程编译,包括综合与适配最后生成 NiosII 硬件系统下载文件。 但为了简化实验,节省时间,把更多的注意力放在 NiosII 系统的设计上,本实验提供一个只完成了小部分设计 的 NiosII 工程模型,其中包括引脚锁定 TCL 文件给出。前期实验步骤详细过程可参考清华大学出版社最新出版的 《EDA 技术与 VHDL》。所以本实验可以从这个 NiosII 示例模型工程开始。 该示例已经 COPY 在您实验的计算机的 E 盘中了:E:\altera_training\nios2_QII50_lab1 当然您也可以将此示例从光盘中 COPY 到计算机的相应盘符下,或干脆从头开始设计,而不用此模型。 图 1-1 Nios2 实验模型 3 2、 启动 QuartusII5.0,利用菜单选择 File => Open Project…,浏览到目录 E:\altera_training\nios2_QII50_lab1, 并选择工程文件 niosII_lab.qpf.,双击后打开。双击左侧工程管理窗的工程名“NiosII_lab”,即可在右侧看到此模型工 程的原理图(图 1-1),其中有一些引脚,是作为此后生成的 NiosII 系统模块的对外引脚,他们要与 FPGA 外的 RAM、 FLASH、RS232 通信口、键盘、LED 显示器、电机等外设相连;图左侧的模块是复位延时电路,用于改善复位信号。 3、 选定目标器件与设定引脚锁定。由于刚打开的工程中,并没有事先选定目标器件,因而也没有锁定引脚。 为了确定器件和引脚,本示例已事先完成了相关的 Tcl 文件的设计,只要调入该文件,即可方便地解决目标器件和 引脚锁定的问题。方法是选择 QuartusII 的 Tools 菜单的 Tcl Scripts 项,在图 1-2 所示窗口中选择“Project”下的 “Cyclone_FPGA_gw48sopc”,再点击 Run,即将该文件中设顶定的目标器件和锁定的引脚信息导入当前工程。 图 1-2 选择 Tcl 文件 首先打开菜单 Assignments 中的 Device 项(图 1-3),在弹出的窗口中点击“Device & Pin Options”按纽,再于 弹出的相应窗口中点击“Configuration”页,选择配置器件为 EPCS4,点击“确定”退出,确定已经选择目标器件为 EP1C6Q240C8。 然后打开菜单 Assignments 中的 Assignments Editor 项,确认模型的引脚都已经锁定。 图 1-3 确定配置器件 EPCS4 4、 开始建立 NiosII 嵌入式系统。由选择 QuartusII 的菜单 Tools => SOPC Builder,即弹出一个如图 1-4 的窗口, 在窗口中键如系统名,如:Nios2_SYSTM,并选择目标文件的硬件描述语言表达方式,Verilog 或 VHDL。点击 OK。 此后将弹出空白的 SOPC builder 组件窗。 从 SOPC builder 组件窗上看,整个 SOPC Builder 界面可以分成三个部分:左边是一个组件(NiosII 嵌入式系统 元件)选择栏,用树型结构列出了 SOPC Builder 的组件;右边空白处可以列出加入的组件;下方是提示栏,提示一 4 些 SOPC Builder 的提示信息和警告错误信息。在右上方,可以选择器件系列和系统工作频率。 首先在 Target Board 窗选择目标开发板:GWSOPC NiosII Development Kit(EP1C6), 这样,DEVICE Family 栏的目标器件 Cyclone 系列器件也被默认确定。然后 CLK 窗确认系统时钟被设定为 50 MHz(如图 1-5 所示)。. 图 1-4 建立一个新的 NiosII 系统 图 1-5 建立一个 SOPC 系统模块 图 1-6 Nios II/s CPU 模式 1.2 加入组件 1、加入 NiosII CPU Core。首先是从左边栏中选择加入 CPU 核 Nios II Processor。选择 SOPC Builder 的组件选 择栏中的“Avalon Components ”→“Nios II Processoror”,点击鼠标右键,选择“Add New NiosII Processor…”,打 开添加 NiosII 对话框(图 1-6)。由图 1-6 可见,NiosII CPU 核有 4 种结构可以选择,有不同的配置、功能和资源耗用 情况,在此点击选择 Nios II/s,再点击 Next,进入窗口 Caches 选择窗,确认设定 instruction cache size 为 4 kbytes , 再点击 JTAG Debug Module 栏,选择 Select the JTAG Target Connection Download Level 3(图 1-7) ,最后点击 Finish 按钮完成 NiosII CPU Core 的添加过程,随后 SOPC Builder 的界面就会改变(图 1-8)。在图 1-8 中可以看到, niosII 作为一个 CPU Core 组件已经加入 SOPC 系统。更改组件名称的方法是选中“CPU_0”,右键选择“Rename”, 更改组件名称为“cpu”。 注意,加入组件的更改和取名很重要,许多组件名此系统的工作软件,C 程序中都会出现,而且大小写有关系。 5 图 1-7 选择 JTAG 的调试模式 图 1-8 加入了 NiosII 的 SOPC 窗口 2、加入 JTAG UART 。从左侧组件 Communication 栏中选择的 JTAG UART 加入,接受弹出窗口中的所有默 认设置(图 1-9);再点击 Simulation 页,选择 Create ModelSim alias to open a window showing output as ASCII text,点 击 Finish,完成设置,并改名为 jtag_uart.。 图 1-9 组件 JTAG UART 设置 3、加入定时器 Timer。在组件选择栏中选择“Others”→“Interval Timer”加入 SOPC 系统的内部定时器。一 切都按照默认配置(图 1-10),点击 Finish 完成加入。更改组件名称为“sys_clk_timer.”。(此定时器可用于此后在上 运行的 C 程序中的某些软件函数进行速度定时)。 4、加入键输入 I/O 口。在这里,一般需要加入用于按键的 PIO,PIO 就是通用 I/O 口。在组件选择栏中选择“Others” →“PIO(Parallel I/O)”加入。选择为 4 位,以对应 4 个按键,并选择“Input”输入模式(图 1-11)。点击“Next” 进行输入选项设置。在此窗中选择产生中断请求(IRQ),为双边沿触发,边沿模式(图 1-12),点击“Finish”完成 加入。更改组件名称为“button_pio”。 6 图 1-10 组件 Timer 设置窗 图 1-11 组件 PIO 输入口设置窗 5、加入 8 发光管 I/O 口。仍然在组件选择栏中选择“Others”→“PIO”加入,选择默认 8 位,以对应 8 个 LED, 并确认“Output”输出模式(图 1-13)。点击“Finish”完成加入。更改组件名称为“led_pio”。 6、加入 2 个 7 段数码管 I/O 输出口。仍在组件选择栏中选择“Others”→“PIO”加入。选择为 16 位,以对应 4 个已经在外围电路被译码的 7 段数码管,并改成“Output”输出模式。点击“Finish”完成加入。更改组件名称为 seven_seg_pio。 7、加入 Avalon 三态总线桥。NiosII CPU 与 SRAM、SDRAM、Flash、自定制组件相接都需要 Avalon 三态总线 桥。在组件选择栏中选择“Bridge”→“Avalon Tri-State Bridge”,加入;在设置窗中(图 1-14)确认选择 Registered 。 点击“Finish”完成加入。更改组件名称为“ext_mem”。 图 1-12 输入方式设置窗 图 1-13 加入 8 个输出 PIO 口 图 1-14 加入 Avalon 总线 3 态桥设置 7 图 1-15 加入外部 Flash 组件的设置窗 8、加入外部 Flash。NiosII C 加入 Flash。在组件选择栏中选择“Memory ”→“Flash Memory (Common Flash Interface)”,加入 Flash ROM 组件。在弹出的参数设置窗中(图 1-15),在“Attributes”栏中首先选择地址线宽度 Address width 为 20,和数据线宽度 Data width 为 16;此后 Presets 栏自动选择“Custom”;在“Timing”栏,设置 niosII 对 Flash 的读写时序;此后选择默认设置(图 1-16)。点击“Finish”完成加入。更改组件名称为“ext_flash”。 9、加入系统 ID 组件。在组件选择栏中选择“Other ”→“System ID Peripheral”,加入此组件(图 1-17)。此 组件名不可改。 10、加入 EPCS Serial Flash Controller 组件。EPCS Serial Flash Controller 可用于 NiosII 处理器对 EPCS Flash 存 储器的读写访问,可以通过此控制器将 SOF 文件和 CPU 运行的软件一并存于 EPCS 器件中,以便大大简化硬件系 统组成结构。在组件选择栏中选择“Memory ”→“EPCS Serial Flash Controller”,点击“Finish”完成加入此组件(图 1-18)。此组件名不可改。 图 1-16 设置对外部 Flash 读写时序 图 1-17 加入系统 ID 组件 图 1-18 EPCS Serial Flash Controller 组件 8 11、加入外部 SRAM 组件。在组件选择栏中选择“Memory”或“GW_SOPC”→“Cy7C1041 SRAM(GWSOPC)”, 对弹出的选择窗确认选择存储量为 1024 kB,点击“Finish”完成加入此组件(图 1-19)。组件名可改为 ext_sram。 至此已完成本项实验的全部组件的加入工作。图 1-20 就是本系统的 NiosII 基本元件安装设置完成的界面。 图 1-19 加入 SRAM 组件 图 1-20 NiosII 组件窗 1.3 NiosII 系统生成前设置与系统生成 1、 地址自动分配设置。为了保证所有组件的地址安排是合法的,如图 1-21 所示,选择菜单 System 中的 Auto-Assign Base Addresses 项,对各组件地址进行自动分配。 2、 复位地址和程序运行区域置。为了点击 Next,进入如图 1-22 的 NiosII 处理器配置窗。选择 epcs_comtroller 作为复位程序区域:Reset Address;选择 ext_sram 作为外部存储单元中的软件运行的存储地址区域:Exception Address。本.页主要设置 CPU 的复位地址和外部 RAM 程序游行地址。 设置完成后可注意到下方的信息栏中已没有早先指出的大量错误提示(图 1-20 中已没有错误提示)。此时保证 所有组件的地址安排是合法的,如图 1-22 所示。 点击 Next,进入系统文件生成控制页。 9 图 1-21 地址自动分配设置 图 1-22 NiosII 处理器配置窗 图 1-23 Nios II 系统生成窗 3、 系统文件生成。系统文件生成控制页如图 1-23 所示。在该页将最终生成 NiosII 系统的 VHDL 文件,以及对 应的硬件仿真文件。点击 Generate。生成过程如图 1-23 所示。 注意如图 1-23 所示信息栏中出现““…SUCCESS:SYSTEM GENERATION COMPLETED”,则可点击 Exit 按 钮,退出系统生成窗。 10 1.4 NiosII 硬件系统生成 1、 加入原理图模块。为了保回到图 1-1 所示的原理图模型窗口,在此原理图编辑窗的空白处双击,将弹出图 1-24 所示的元件“Symbol”窗,点击左侧的元件库栏中的 Project 项,选择刚才生成好的“Nios2_SYSTM”模块(图 1-24),再点击下方的 OK,即可将此元件雕入原理图编辑窗中。 图 1-24 Nios II 系统生成窗 图 1-25 连上 Nios2_Systm 模块 将调入的模块于图中的引脚连好,并仔细核对每一引脚都对接正确,包括外部存储器的地址线、数据线、读写 控制线、片选线、各类 I/O 口线、复位线。 图 1-26 定制一个宏功能模块 11 2、 加入锁相环。为了提高处理器工作时钟的频率,或改善外来时钟脉冲的特性,在此引入 Cyclone 器件中已 嵌入的锁相环。步骤如下: 点击如图 1-26 窗口左下的 MegaWizard Plug-In Manager 按纽,对弹出的窗口点击 Next,进入图 1-27 对话框,在 该框左栏的 I/O 项中选择 ALTPLL;选择器件为 Cyclone;选择表达语言为 VHDL;选择生成的锁相环文件路径在当 前工程所在路径及模块名(如 PLL20.VHD)。点击 Next 后进入图 1-28 所示的窗口。 在图 1-28 所示的窗口中设定锁相环的输入时钟频率,该频率要示实验开发板上提供的时钟频率而定, GW48SOPC 板上的时钟有两类:20MHz 和 50MHz,这里选择 50MHz。 图 1-27 选择 ALTPLL 模块 图 1-28 设置锁相环的输入频率为 50MHz 图 1-29 消去不需要的控制线和输出信号线 12 进入图 1-29 所示的窗后可根据需要增加或消去一些控制信号线,在此将本实验中不必要的信号线全部消去。 进入图 1-30 窗后设置锁相环的输出频率:选中“Enter output clock frequency”,再于右边窗中键入输出频率值: 50MHz。 图 1-30 设顶输出频率为 50MHz 点击余下窗口所有 Next 按纽后结束模块定制流程(图 1-31)。 图 1-31 点击 Finish 后结束模块定制 再于 Symbol 窗的元件库栏的 Project 项内找到刚才定制的 PLL20 元件,把他加入到原理图编辑窗中,并与时钟 输入端连接好(图 1-32)。 图 1-32 选中锁相环 PLL20 13 图 1-33 将锁相环 PLL20 连接到时钟输入端 如果要改变图中锁相环的参数,可双击 PLL20 元件,改变输入输出频率。特别需要注意的是,PLL20 输入口的 时钟频率必须与设置的频率一致,且不能低于 16MHz;对于 Nios2 的高速运行模块,输入时钟源不能离 FPGA 过远。 3、 编译。以上的所有准备工作完成后,就可以进行全程编译了,即进行分析、综合、适配和输出文件装配, 并对结果进行时序分析,给出编译报告。 图 1-34 启动全程编译 图 1-35 全程编译完成 如图 1-34 所示,选择菜单 Processing Start Compilation,启动全程编译。如果前期工作没有错误,图 1-35 所示 14 的窗口将给出了编译结果,从右栏可以看到 FPGA 的资源利用情况。 至此,NiosII 嵌入式系统的硬件设计部分已全部完成,以下将开始为此系统进行的软件设计和调试。如果发现 软件工作情况不能完全满足设计要求,还可以回过头来修正或彻底更改硬件设计,这真实 SOPC 的优势所在。 实验二、NiosII 软件设计与运行流程 本实验是于实验 1 相连的,本实验主要完成在 NiosII 硬件系统完成及下载于 FPGA 中的基础上,进行软件开发、 下载和调试,具体流程如下: 1、 向 FPGA 下载配置文件。以下的实验将更多地与 SOPC 实验系统联系。本次实验是使用清华大学电工电子 实验中心的 GW48-SOPC 实验系统(康芯公司),下载前连接好下载通信线,打开电源,打开光盘上关于此实验系统 的 PDF/PPT 默认设置说明,确认实验系统所有开关和跳线处于默认设置位置。 用 10 芯通信线将实验系统左侧的“Byterblaster II”接口与适配板上的 JTAG Port 口相连; 将实验系统左侧的跳线短路帽接插“ByBt II”端,编程电压选择跳线短路帽插 3.3V(此电压接错不会损坏系统)。 按动实验系统左下角的电路模式控制键,选择模式 5(在上方的数码管会显示 5 字),这时实验系统将进入附录 中附图 1 的电路连接模式(有 12 中不同的可选硬件电路模式)。 注意模式 5 的 8 个键控特点:每按键一次,输出电平反相一次,电平高低由此键上方的发光管显示; 还注意到此时 FPGA 输出的 32 个 I/O 口接了 8 个数码管,每 4 个 I/O 口接一个数码管,且在每一数码管外接了 一个 16 进制至 7 段译码的译码器,这样可以大大节省 I/O 口的耗用。 FPGA 的主要端口是用标准信号名 PIOx 标注的,具体引脚号在引脚锁定时查阅附录的附表 1;例如附图 1 中连 接 FPGA 的键 8 端口标准信号名是“PIO7”,查附表 1,横项 GW48-SOPC 对应 Pin240。 现在可以开始下载配置文件,以便在 FPGA 中建立 NiosII 硬件环境。打开 QuartusII,再打开实验一的工程,选 择菜单 Tools Programmer,弹出图 2-1 所示窗口,首先选择接口模式,对于 Mode 栏确认选择 JTAG 模式;如果是 首次安装并使用该软件,要作下载接口模式选择:点击图 2-1 左侧的 Hardware Setup 按纽,将弹出图 2-2 所示窗口。 图 2-1 选择接口模式:JTAG 图 2-2 选择硬件通信接口模式:ByteBlaster II 如果实验系统的连接是正确的,在图 2-2 的窗中的 Hardware 栏应该看到测试到的“ByteBlasterII”接口名,双击 该名再退出该窗,就能在图 2-1 窗的 Hardware Setup 按纽右侧看到 ByteBlasterII[LPT1]字样。最后如图 2-3,加入配 置文件 niosII_lab.sof,点击 Start 按钮,下载该文件。 15 由图 1-33 可见,该 NiosII 系统是低电平复位,高电平正常工作,所以在下载了 SOF 文件后,要将实验系统的键 8 置于高电平(NiosII 系统的复位信号锁定于键 8 Pin240,模式 5)。 图 2-3 下载 SOF 配置文件 2、进入集成开发环境IDE。再次进入图1-23所示的SOPC Builder窗,进入System Generaiom页, 点击Run NiosII IDE 按纽(图 2-4),或选择菜单 Tools Nios II IDE,进入 IDE 环境。 图 2-4 点击 Run NiosII IDE 按纽,进入集成开发环境 作此选择后将弹出图 2-5 所示的窗口,其中有一个软件过程路径选择窗 workspace,在此选择如图所示的路径, 他是本示例中已预先建立的一个空文件夹;如果此前已经有了自己的软件实例工程库文件夹,现在还想使用,则必 须浏览到对于路径,并进入该文件夹。 图 2-5 选择软件工程库 点击 OK 后将出现图 2-6 所示的窗口(以后进入同一工程库将不会出现该窗)。再点击此窗右上角的 workbench 16 按钮,即进入 IDE 环境。 3、 建立 C 软件开发工程。进入的 IDE 环境窗口的左栏是各工程的工程名和相关的应用文件名,中间是选中的 某一文件的内容,及其编辑环境;右栏是对应文件中关键项目名称。 为了新建一个开发软件的工程项目,选择菜单 File 的 New->Project.(图 2-7),在弹出的如图 2-8 所示的窗口中 选择 C/C++ Application ,并按 Next 按钮,在于继而弹出的窗口(图 2-9)中选择现成的实例“Hello_Led”作为实 验程序,并在工程名栏键入当前软件实例工程名:“led_8bit”;并确认在. Select Target Hardware 栏中的 ptf 文件来 自当前 SOPC Builder System 的硬件设计文件和处理器名:Nios2_systm.ptf,和 CPU 名:“CPU”。 图 2-6 选择进入 IDE 软件设计/调试平台 图 2-7 建立一个软件实例工程 图 2-8 选择 C/C++应用 点击 Finish 后即进入如图 2-10 所示的 IDE 环境,在左栏已能看见新建的工程:led_8bit ,双击下方的程序名 hello_led.c,在中栏即能看见此源程序代码(图 2-10)。将代码中原语句 while(i<200000)改为 while(i<400000)。 4、 编译运行 C 程序。在左边的“C/C++ Projects”页一栏中,右键点击需要运行的工程名:“led_8bit”,将出 现图 2-11 所示下拉选择框;选择 Run As 后出现另一下拉栏,此栏有 3 个选择项:第一个选项功能是编译并向 FPGA 中的 NiosII CPU 下载和全速运行该工程中 C 程序; 第二个选项功能是编译并在虚拟的 NiosII 中运行程序;第三个 选项功能是使用第 3 方工具运行;在此选择第一项功能:Run As-> Nios II Hardware.。选中后将可能出现图 2-12 所 17 示的窗口,选择 OK,表示对新改的程序存盘。 图 2-9 在示例库中选择一个 C 程序实例 图 2-10 进入 NiosII IDE 窗口 图 2-11 编译、下载并在 NiosII CPU 中全速运行该示例 图 2-12 存盘已修改的 C 源程序 4、 观察运行结果。在如果一切无误,最后在下方的 console 信息窗将出现如图 2-13 所示信息,表示已将程序 下载到 NiosII 系统,并已运行。注意,如果有问题可以再下载一次。一般出现的问题有多种:如没有将当前硬件工 18 程中的 SOF 文件配制进 FPGA;没有为复位信号设置正确电平;没有设定正确的系统时钟输入频率;没有设置好正 确的下载接口模式;没有对实验系统选择正确的电路模式(模式 5),等等。 程序运行后可以在实验系统上的上排 8 个发光管上发现它们在从左至右,从右至左跳动发亮,跳动的速度由语 句 while(i<400000)中的数值决定。 图 2-13 C 程序下载成功,启动运行 5、 单步/跟踪调试运行。对于当前工程中的程序 hello_led.c,也能进行单步/跟踪等方式的调试运行。 在左边的“C/C++ Projects”页一栏中,选中工程名:“led_8bit”,右键点击后出现如图 2-14 所示下拉选择栏, 选择“Debug As”项中的 Nios II Hardware 项,对跳出的图 2-15 所示的信息窗选择 Yes。 图 2-14 选择单步/跟踪调试模式运 C 程序 图 2-15 选择单步/跟踪调试模式运 C 程序 图 2-16 单步/跟踪调试窗 19 最后在将程序下载于实验开发板后弹出如图 2-16 所示的界面。在该界面的下方是可单步调试和断点设置的程序 窗,按动 F5 键就能单步运行,右上方的窗将显示每一单步运行后,程序中个变量的变化情况;左上窗可以看到语 句步骤数。 如果需要回到 IDE 主窗口,可以点击左上方的小按纽,对弹出的下拉框(图 2-17),选择 C/C++即可。 图 2-17 返回 IDE 主控窗 如果希望将已调试好的 C 程序 COPY 到别的文件夹中,可以如图 2-18 所示,点击该文件名,右键选择 Copy。 图 2-18 将已调试好的 C 程序 COPY 到其他文件夹存盘 6、 运行另一个示例程序。与以上流程相同,首先建立一个工程,如图 2-19 所示,键入工程名为:hello_world_1, 选择 Select Project Template 栏的示例程序:hello_world。点击 Next 和 Finish。 图 2-19 为测试运行另一个示例程序建立一个新工程 图 2-20 是该新工程稍作修改后的源程序 hello_world.c 的代码, 存盘。:选择 Run As-> Nios II Hardware,全 速运行。完成后我们可以看到,语句执行后打印出的结果通过 JTAG UART 口送上了计算机,显示在信息窗内(图 20 2-21)。 图 2-20 修改 hello_world.c 源程序 图 2-21 hello_world.c 程序下载运行成功,并通过 JTAG_UART 口输出执行结果 7、 运行用户程序。在如果用户自己编辑了一个程序该如何加入工程中进行调试呢?步骤如下: 与以上步骤基本相同,首先是为自己的程序建立一个工程(图 2-22),同样选择 C/C++应用(图 2-23); 图 2-22 为调试一个用户程序建立一个空白工程 图 2-23 同样选择 C/C++应用 在弹出的图 2-24 窗中的 Select Project Template 栏选择 Blank Project,建立一个空白工程,即未含源程序代码的 工程,键入工程名,如 Project_LED,点击 Next 和 Finish 按纽后回到 IDE 窗口。 在 IDE 窗,点击左侧的“C/C++ Projects”页旁的“Navigator”页(图 2-26); 然后打开 Windows 的资源管理器,找到自己 C 程序放置的文件夹(如 hello_SEG7.c ,如图 2-26 所示),打开,再 缩小资源管理器的界面,用鼠标点住文件名(如 hello_SEG7.c),拖向左侧 IDE 窗口的 Project_LED 过程名中。 再点击“C/C++ Projects”页,返回软件工程窗(图 2-27)。完成后即能在此工程名下看到被拖入的 C 程序。 选择 RunAs-> Nios II Hardware,全速运行之(图 2-27)。注意不要忘了,在这之前下载当前工程的 SOF 配置 文件进入 FPGA 中,选择实验系统模式 5,设置复位信号允许工作。 21 图 2-24 选择空白工程,并取名为:project_LED 图 2-25 选择默认设置 图 2-26 将 hello_SEG7.c 拖入 Navigater 栏中的用户 C 程序工程 此程序的运行结果是,实验系统上排的 8 个发光管轮流闪动,数码管 4、3、2、1 显示 4 个 16 进制数:A、B、 22 C、D。 图 2-27 返回 C/C++ Projects 窗,并全速运行该用户程序 实验三、加入用户自定义组件设计 对于自定制的 Avalon 总线外设,按照对 Avalon 总线操作的不同可以分为两类:Avalon Slave 外设和 Avalon Streaming Slave 外设。对于 Avalon Slave 外设只是作为 Avalon 总线的一个 Slave 元件来处理,而 Streaming Slave(流 模式)外设则需要使用 Avalon 总线的 Streaming 传输模式;在这里只对 Avalon Slave 外设的设计进行介绍。 在此需要设计的示例是一个 PWM 外设,这是一个脉冲宽度调制电路,在控制系统的应用中比较常见。PWM 的具体设计要求如下: 要求信号的周期可调; 脉冲的宽度可调; 可以控制 PWM 的输出使能。 PWM 的输出将连接到 FPGA 外的一个直流电机上,通过控制 PWM 外设寄存器可以对直流电机转速进行 控制。按照设计要求,设定 PWM 外设共有 3 个寄存器,分别为: Clock_Divisor 决定信号周期,是一个 32 位的寄存器; Duty_Cycle 控制信号的占空比,也就是控制脉冲的宽度,32 位; Control 控制寄存器,只有最后一位是有效的。 PWM 外设的核心是一个计数器,有 Clock_Devisor 控制计数周期。PWM 的输出是计数器与 Duty_Cycle 比较的 结果。这里源程序略去,在此主要通过一个实验,介绍在 NiosII 的 Avalon 总线上加入自制组件模块的设计方法。 图 3-1 PWM 用户自定制逻辑模块的 Verilog 文件和 C 文件存放路径 假设,PWM 用户自定制逻辑模块的两个 Verilog 文件(其中 pwm_motor.v 是定层文件)和 C 文件,头文件的 23 存放路径如图 3-1 所示。设计步骤如下: 图 3-2 将用户自定制逻辑模块加入进 NiosII 中 图 3-3 加入用户自定制逻辑模块文件 图 3-4 读入模块的端口表,并补充端口名 图 3-5 最后正确的端口名表 24 1、入用户逻辑模块。在进入当前工程的 SOPC Builder 窗的 System Content 页,如图 3-2 所示。选择 Legacy Compnents 项下的 Interface to User Logic,右键点击后,选择加入图 3-3 所示的对话框,点击“Add”按纽,进入浏览 窗,找到图 3-1 所示的文件夹,首先选择顶层文件 pwm_motor.v,加入后,再选择加入另一 Verilog 文件,两个文件 被加入后的界面如图 3-3 所示。 点击该窗下的“Read port-list from file”按纽,端口信号即出现在 Port Information 表中,他们的端口类型已基本 指定好,对于没有指定的 pwm_out 信号,需要手工指定: 点击 Type 栏下方的对应处,在出现的下拉栏中选择“Export”,如图 3-4 所示。完成后如图 3-5 所示,且下方信 息提示栏没有报出错误指示!这表明加入的模块的端口连接正确。 最后直接点击“ADD To System”按纽,将模块加入 NiosII 系统。 回到 SOPC Builder 窗后,将加入的用户模块的名称改为“my_pwm”,如图 3-6 所示。 注意,组件名最好就使用:my_pwm,因为在对应的 C 程序中用到了此名,否则要修改 C 程序中对应名称。 图 3-6 加入了用户自定制模块的 NiosII 组件列表 图 3-7 NiosII 组件生成运行完成 图 3-8 在更新的 NiosII 模块中加入端口信号 2、生成和编译。注意更改组件后必须再生成一次,图 3-7 是生成结束并成功的界面,点击“Exit”,退出 SOPC Builder 窗,进入 QuartusII 主管理窗。双击左侧的工程名:nios II_LAB,就能看到主系统原理图,利用图 1-24 介绍 25 的方法,删除旧的模块,加入新的 NiosII 模块(注意,每一次生成后都必须换入新模块),并接入 pwm 的输出引脚 (图 3-8)。由于直流电机有两个输入相,所以加入两个输出脚:pwm 和 pwm0;pwm 脚接在 NiosII 模块上,输出 PWM 波,pwm0 脚接地;这两个端的信号分别所在第 225 和 226 脚上。,即:pwm pin225, pwm0 pin226。 这是因为,实验系统上的电机的控制引脚如图 3-9 所示,直流电机两个输入相的引脚分别与 FPGA 的 PIO60 和 PIO61 相接,通过查阅附表 1,得到 PIO60 是 225 脚,PIO61 是 226 脚。 步进电机 Ap相 Bp相 Cp相 Dp相 PIO65 PIO64 PIO63 PIO62 JM0 :步进电机开关跳线 直流电机 MA1相 PIO61 MA2相 PIO60 cont 转速计数 PIO66 JM1 :直流电机开关跳线 JM2 :电机计速开关 图 3-9 电机引脚原理图 实验系统上的两个电机的引脚图,是以标准引脚方式标注的,具体引脚要查附表 1。例如步进电机的 Ap 相接 PIO65,对于 SOPC 板的 EP1C6 查表,对应引脚为:219;直流电机的 MA1 和 MA2 相为 PWM 输入控制端,cont 为光电输出给 FPGA 的转速脉冲,接 PIO66=218 脚,是转速脉冲信号引脚。 注意,在实验箱上,当不作电机实验时要通过 3 个跳线座,禁止它们;例如其中 JM1 是直流电机的开关跳线, 如此等等。 图 3-10 准备对新的端口信号锁定引脚 图 3-11 对新的端口信号 pwm 和 pwm0 锁定引脚 3、锁定 FPGA 控制电机的引脚。如图 3-10 所示,在 Assignments 的下拉菜单中,选择 Assignment Editor,弹出 的窗口如图 3-11 所示,点击右上角的“Pin”,再于下方分别键入信号名 pwm 和 pwm0,分别输入它们引脚号为 225、 26 226。然后,存盘后启动全程编译。 再下载编译好的 SOF 配置文件于 GW48-SOPC 实验开发板上的 FPGA 中。 4、建立软件工程。在此开始软件设计和调试工作。首先为工作软件建立一个空的工程。如图 3-12 所示,选择 空工程项目:Blank Project,键入工程名,如 project _pwm ,详细流程同前。 然后用 Windows 资源管理器打开事先设计好的 pwm 控制软件所在的文件夹(图 3-13),将一个 H 文件: altera_avalon_pwm.H 和一个 C 文件:altera_motor.C 都拖到 Navigator 页下的 project _pwm 工程中。 图 3-14 中就能看到已被加入的两个文件。 图 3-12 建立一个空的软件工程 project_pwm 图 3-13 将 2 工作软件拖入 Navigator 栏的空工程中 图 3-14 观察 C/C++ Projects 栏中被加入的源程序 pwm_motor.c 5、运行和调试软件。在回到 C/C++ Projects 页,开始编译运行工程 project_pwm 中加入的软件程序(图 3-15)。 图 3-16 是执行结果:当编译完成后将在信息窗出现:Please enter a Motor speed level between 1 to 4(0 to exit)字 27 样,即可在此句下方键入数字,1 到 4 为电机速度控制字,数字越大,电机转速越快;若输入 0,则电机停转,并退 出此程序。 实验中可通过输入不同的数字,观察电机的转速变化情况。注意,实验前要根据图 3-9,设置好控制跳线。 图 3-15 编译并全速运行该程序 图 3-16 软件对电机运行和操作过程 注意,当把示例程序 COPY 到其他路径,软件工程将无法找到该路径(硬件工程不存在此情况)。 图 3-17 将频率计 VHDL 顶层文件生成一个原理图元件 5、加入电机测速电路。为了对 NiosII 系统中的 PWM 模块对电机的转速控制有一个量化标准,在此可加入对电 机的测速电路。首先加入测速频率计:如图 3-17 所示,打开已放在示例模型文件夹中的频率计程序顶层设计文件: 28 freqtest.vhd ,选择菜单 File 中的 Create L Update Create Symbol File for Current File,将此频率计生成一个原理图元件 文件。这个频率计除顶层设计 freqtest.vhd 外,还有其他 3 个底层模块,如图 3-18 所示,它们是:计数器模块 CNT8.vhd, 锁存器模块 REG8B.vhd 和测频控制模块:TESTCTL.vhd 。这是一个 2 位 16 进制频率计。 图 3-18 频率计 FREQTEST 的 RTL 图 图 3-19 是将生成的频率计模块调入主系统原理图中。 图 2-20 是加入了电机转速测频电路的完整 NiosII 系统电路原理图。 图 3-19 向主系统原理图调入频率计原理图元件 图 3-20 NiosII 系统完整的原理图 如图 3-21 所示,增加的测速电路除频率计外,还有电机转向控制电路:mux22a;转速脉冲消抖动电路。消抖 动电路主要用于去除转速脉冲信号中的毛刺信号,使计数更精确,其两个输入信号 cnt 来自电机产生的转速脉冲, 有 PIO66 进入 FPGA,PIO66 接 218 脚;clk5 是工作时钟,接实验系统的 clock5,选择 4096Hz;dest 是转向控制信 号,接 239 脚,由键 7 控制;HZ1 是测频门宽信号,接实验系统的 clock2,选择 1Hz; 29 data[7..0]是转速输出,接数码管 8 和数码管 7;实验箱上此两数码管显示的 16 进制数是测得的当前电机每秒钟 旋转的周数。 图 3-21 NiosII 系统电机控制与转速测定/显示电路 6、运行软件。首先将此电路系统从新全程编译一次,下载后,再将以上的软件程序下载运行,观察转速控制 和变化情况;同时了解电机旋转方向的控制情况。 实验四、加入用户自定义指令设计 自定制指令是使用 NiosII 嵌入式软核处理器的 SOPC 系统的一个重要特性。使用自定制指令可以针对 SOPC 具 体应用来合理使用硬件资源,作出相应的指令集调整,以便提高软件算法的处理能力。由硬件模块构成的自定制的 指令可通过单时钟周期或多时钟周期的硬件算法操作来完成原本十分复杂的软件处理任务,不但如此,自定制的指 令也同样能访问存储器或 NiosII 系统外的接口逻辑。自定制指令可以有许多用途,例如在一个需要涉及复杂浮点数 运算的场合,可以加入自定制的浮点指令,从而大大提高 CPU 的数据处理效率;而在需要使用大量 DSP 算法的场 合,可以定制一些诸如复数乘法或整数乘法等传统 DSP 运算指令,使 NiosII 系统具有常规 DSP 处理器的功能。 图 4-1 自定制指令逻辑模块 图 4-2 自定制指令逻辑模块接口 NiosII 中的自定制指令逻辑模块加入方式和接口信息如图 4-1、4-2 所示。 在此通过完成 NiosII 自定制指令设计的实验,了解整个设计方法。 本实验的指令模块是一个硬件乘法器,VHDL 描述如图 4-3 所示,端口是按照图 4-2 的端口名命名的。此程序 30 已存放于当前工程所在文件夹中。 图 4-3 乘法指令 VHDL 程序 图 4-4 打开 CPU 的自定制指令对话框 图 4-5 加入已设计好的乘法指令 VHDL 程序 31 进入 SOPC Builder 窗,双击组建表中的“CPU”名,这样会弹出一个 NiosII CPU 的设置窗,在该窗中选择“Custom Instructions”页,将打开 CPU 的自定制指令对话框(如图 4-4 所示)。 点击窗口下方的 Import 按纽,将再次打开又一对话框,点击 Add 按纽,进入浏览器(图 4-5),在本工程文件 夹中找到乘法器程序文件:mult.vhd,选中加入。回到如图 4-6 所示窗口,再点击 Read port-list from files 按纽,读入 端口信号。这时可以从图 4-6 中看到已将 VHDL 文件中所有信号读入窗内,且已配置好相应的端口类型 Type,而在 下方的信息栏内没有出现报错信息。 图 4-6 读入程序的端口信号 点击下方的 Add to System 按纽,退到图 4-7 所示的对话框,在此可以根据需要设定该模块的运行时钟周期。 图 4-7 已加入一条名为 mult 的乘法指令 点击 Finish 按纽后,进行生成操作(Generate),结束后不要忘了在主系统电路中换上新的 NiosII 模块,再全程 编译一次,下载后进行软件设计和调试,参考程序如程序 1 所示。 程序 1 #include "system.h" int main (void) { 32 int x,y,z,f ; xr=569; yr=1923;; x=xr; y=yr; printf("\n%08x %08x \n",x,y); z=ALT_CI_mult(x,y); //使用 nm_mult()调用了乘法自定制指令 printf("\n%08x %08x %08x\n",x,y,z); } 实验五、Flash 编程下载 一个独立的 SOPC 系统应该在上电后首先自动向 FPGA 配置 NiosII 硬件系统文件(POF 或 SOF 文件),然后由 刚在 FPGA 中建立好的 NiosII 系统自动从存储器中读出工作软件进行执行。 这就要求实现将硬件文件和软件文件都在实现烧写于存储器中,本实验即介绍烧写这两种程序于 Flash 存储器 的方法: 在 IDE 环境窗中选择菜单 Tools 中的 Flash Programmer 项,打开 Flash 编程对话框,如图 5-2 所示。 图 5-1 打开 Flash 编程对话框 图 5-2 在 Flash 编程对话框中完成必要设置 在图 5-2 的对话框中首先点击 NEW,将出现图 5-2 所示界面,再点击 Target Connection 页,启动检测测试编程 33 口通信状况;然后从浏览器 Browse 中选中所要下载的软件工程;再选中“Program FPGA Configuration…”,点击 “Apply”按纽,最后点击“Program Flash”,启动编程。 编程成功后将在 IDE 环境下方信息窗中出现图 5-4 所示的信息。 从新打开实验系统的电源后就能完整执行所载如的程序了。 模拟信号输入 超高速A/D 模拟信号输出 超高速D/A 超高速D/A 模拟信号输出 图 5-4 对 Flash 烧写编程的消息 实验五、设计 DSP 处理器功能系统 本实验要求,根据 DSP 处理器的特性,利用 SOPC Builder 设计一个具有常规 DSP 处理器的 NiosII 功能系统, 以使能完成数字信号处理方面功能操作。 本实验可根据实验一,首先建立一个 NiosII 硬件系统,在 SOPC 实验系统上软硬件调试成功后,再根据实验 3, 加入自定制指令,自定制指令的内容可以根据 DSP 处理的目标决定,如设计 FFT 或 FIR 或其他,从而加入复数乘 法器,或乘法类加器,或浮点乘法器等等;要求也要在 SOPC 实验系统上进行软硬件调试,成功后进入第 3 步,即 参考实验 2,加入自定制 Avalon 总线组件,用于控制采样 A/D 的工作,及控制高速 D/A 的波形数据输出。 5510/5540 数据输出 D7 Pin213 D6 Pin214 D5 Pin193 D4 Pin227 D3 Pin194 D2 Pin228 D1 Pin207 D0 Pin208 AIN ADCLK Pin144 数据输入 D9 D8 D7 5651 D6 D5 D4 D3 D2 D1 D0 AOUT(A) A口输出 DACLK Pin141(PIO36) Pin158(PIO37) Pin159(PIO38) Pin160(PIO39) Pin161(PIO40) Pin162(PIO41) Pin163(PIO42) Pin164(PIO43) Pin165(PIO44) Pin166(PIO45) 数据输入 Pin128(PIO26) Pin132(PIO27) Pin133(PIO28) Pin134(PIO29) Pin135(PIO30) Pin136(PIO31) Pin137(PIO32) Pin138(PIO33) Pin139(PIO34) Pin140(PIO35) Pin167(PIO46) D9 D8 D7 5651 D6 D5 D4 D3 D2 D1 D0 AOUT(B) DACLK B口输出 图 5-1 SOPC GWAC6/12 板 AD_DA B 型板接口原理图 GW48-SOPC 的 DSP 系统配置的超告诉 ADC 和 DAC 电路原理图如图 5-1 所示。其中 DAC 的转换速率是每秒 200MHz;ADC 的转换速率是每秒 50MHz;为了充分发挥 ADC,DAC 的高速性能,必须参考实验一的嵌入式锁相 环的使用方法,用 PLL 控制 DAC 和 DAC 的工作时钟:由图 5-1 可见,两个 DAC 的工作时钟 DACLK 是连在一起 的,与 FPGA(EP1C6/12)的第 167 脚连接;ADC 的时钟 ADCLK 与 FPGA 的第 144 脚相连,引脚锁定时必须注 意。图 5-1 中其他引脚部分使用标准编号标注的,如 PIO34,具体引脚号必须查附表 1 才能确定。 34 附录:GW48 EDA/SOPC 系统相关表格与电路 附表 1 :适合于 QuartusII 的部分器件引脚对照表 结 构 图 GW48-CCP,GWAK100A GW48-SOC+/ GW48-DSP 上 的 信 EP1K100QC208 EP20K200/300EQC240 号名 引脚号 引脚名称 引脚号 引脚名称 PIO0 7 I/O 224 I/O0 PIO1 8 I/O 225 I/O1 PIO2 9 I/O 226 I/O2 PIO3 11 I/O 231 I/O3 PIO4 12 I/O 230 I/O4 PIO5 13 I/O 232 I/O5 PIO6 14 I/O 233 I/O6 PIO7 15 I/O 234 I/O7 PIO8 17 I/O 235 I/O8 PIO9 18 I/O 236 I/O9 PIO10 24 I/O 237 I/O10 PIO11 25 I/O 238 I/O11 PIO12 26 I/O 239 I/O12 PIO13 27 I/O 2 I/O13 PIO14 28 I/O 3 I/O14 PIO15 29 I/O 4 I/O15 GWAK30/50 EP1K30/20/50TQC144 引脚号 引脚名称 8 I/O0 9 I/O1 10 I/O2 12 I/O3 13 I/O4 17 I/O5 18 I/O6 19 I/O7 20 I/O8 21 I/O9 22 I/O10 23 I/O11 26 I/O12 27 I/O13 28 I/O14 29 I/O15 GWAC3 EP1C3TC144 引脚号 引脚名称 1 I/O0 2 I/O1 3 I/O2 4 I/O3 5 I/O4 6 I/O5 7 I/O6 10 I/O7 11 DPCLK1 32 VREF2B1 33 I/O10 34 I/O11 35 I/O12 36 I/O13 37 I/O14 38 I/O15 GW48-SOPC/DSP EP1C6/1C12 Q240 引脚号 引脚名称 233 I/O0 234 I/O1 235 I/O2 236 I/O3 237 I/O4 238 I/O5 239 I/O6 240 I/O7 1 I/O8 2 I/O9 3 I/O10 4 I/O11 6 I/O12 7 I/O13 8 I/O14 12 I/O15 PIO16 30 PIO17 31 PIO18 36 PIO19 37 PIO20 38 PIO21 39 PIO22 40 PIO23 41 PIO24 44 PIO25 45 PIO26 113 PIO27 114 PIO28 115 PIO29 116 PIO30 119 PIO31 120 PIO32 121 PIO33 122 I/O 7 I/O 8 I/O 9 I/O 10 I/O 11 I/O 13 I/O 16 I/O 17 I/O 18 I/O 20 I/O 131 I/O 133 I/O 134 I/O 135 I/O 136 I/O 138 I/O 143 I/O 156 I/O16 30 I/O17 31 I/O18 32 I/O19 33 I/O20 36 I/O21 37 I/O22 38 I/O23 39 I/O24 41 I/O25 42 I/O26 65 I/O27 67 I/O28 68 I/O29 69 I/O30 70 I/O31 72 I/O32 73 I/O33 78 I/O16 39 I/O16 13 I/O16 I/O17 40 I/O17 14 I/O17 I/O18 41 I/O18 15 I/O18 I/O19 42 I/O19 16 I/O19 I/O20 47 I/O20 17 I/O20 I/O21 48 I/O21 18 I/O21 I/O22 49 I/O22 19 I/O22 I/O23 50 I/O23 20 I/O23 I/O24 51 I/O24 21 I/O24 I/O25 52 I/O25 41 I/O25 I/O26 67 I/O26 128 I/O26 I/O27 68 I/O27 132 I/O27 I/O28 69 I/O28 133 I/O28 I/O29 70 I/O29 134 I/O29 I/O30 71 I/O30 135 I/O30 I/O31 72 I/O31 136 I/O31 I/O32 73 I/O32 137 I/O32 I/O33 74 I/O33 138 I/O33 35 结 构 图 GW48-CCP,GWAK100A GW48-SOC+/ GW48-DSP 上 的 信 EP1K100QC208 EP20K200/300EQC240 号名 引脚号 引脚名称 引脚号 引脚名称 PIO34 125 I/O 157 I/O34 PIO35 126 I/O 160 I/O35 PIO36 127 I/O 161 I/O36 PIO37 128 I/O 163 I/O37 PIO38 131 I/O 164 I/O38 PIO39 132 I/O 166 I/O39 PIO40 133 I/O 169 I/O40 PIO41 134 I/O 170 I/O41 PIO42 135 I/O 171 I/O42 PIO43 136 I/O 172 I/O43 PIO44 139 I/O 173 I/O44 PIO45 140 I/O 174 I/O45 PIO46 141 I/O 178 I/O46 PIO47 142 I/O 180 I/O47 PIO48 143 I/O 182 I/O48 PIO49 144 I/O 183 I/O49 以下引脚仅 GW48-GK 和 GW48-PK2 系统包含 结 构 图 GW48-CCP,GWAK100A GW48-SOC+/ GW48-DSP 上 的 信 EP1K100QC208 EP20K200/300EQC240 号名 引脚号 引脚名称 引脚号 引脚名称 PIO60 202 PIO60 223 PIO60 PIO61 203 PIO61 222 PIO61 PIO62 204 PIO62 221 PIO62 PIO63 205 PIO63 220 PIO63 PIO64 206 PIO64 219 PIO64 PIO65 207 PIO65 217 PIO65 PIO66 208 PIO66 216 PIO66 PIO67 10 PIO67 215 PIO67 PIO68 99 PIO68 197 PIO68 PIO69 100 PIO69 198 PIO69 PIO70 101 PIO70 200 PIO70 PIO71 102 PIO71 201 PIO71 PIO72 103 PIO72 202 PIO72 PIO73 104 PIO73 203 PIO73 PIO74 111 PIO74 204 PIO74 PIO75 112 PIO75 205 PIO75 PIO76 16 PIO76 212 PIO76 PIO77 19 PIO77 209 PIO77 PIO78 147 PIO78 206 PIO78 PIO79 149 PIO79 207 PIO79 GWAK30/50 EP1K30/20/50TQC144 引脚号 引脚名称 79 I/O34 80 I/O35 81 I/O36 82 I/O37 83 I/O38 86 I/O39 87 I/O40 88 I/O41 89 I/O42 90 I/O43 91 I/O44 92 I/O45 95 I/O46 96 I/O47 97 I/O48 98 I/O49 GWAK30/50 EP1K30/20/50TQC144 引脚号 引脚名称 137 PIO60 138 PIO61 140 PIO62 141 PIO63 142 PIO64 143 PIO65 144 PIO66 7 PIO67 119 PIO68 118 PIO69 117 PIO70 116 PIO71 114 PIO72 113 PIO73 112 PIO74 111 PIO75 11 PIO76 14 PIO77 110 PIO78 109 PIO79 GWAC3 EP1C3TC144 引脚号 引脚名称 75 I/O34 76 I/O35 77 I/O36 78 I/O37 83 I/O38 84 I/O39 85 I/O40 96 I/O41 97 I/O42 98 I/O43 99 I/O44 103 I/O45 105 I/O46 106 I/O47 107 I/O48 108 I/O49 GWAC3 EP1C3TC144 引脚号 引脚名称 131 PIO60 132 PIO61 133 PIO62 134 PIO63 139 PIO64 140 PIO65 141 PIO66 142 PIO67 122 PIO68 121 PIO69 120 PIO70 119 PIO71 114 PIO72 113 PIO73 112 PIO74 111 PIO75 143 PIO76 144 PIO77 110 PIO78 109 PIO79 GW48-SOPC/DSP EP1C6/1C12 Q240 引脚号 引脚名称 139 I/O34 140 I/O35 141 I/O36 158 I/O37 159 I/O38 160 I/O39 161 I/O40 162 I/O41 163 I/O42 164 I/O43 165 I/O44 166 I/O45 167 I/O46 168 I/O47 169 I/O48 173 I/O49 GW48-SOPC/DSP EP1C6/1C12 Q240 引脚号 引脚名称 226 PIO60 225 PIO61 224 PIO62 223 PIO63 222 PIO64 219 PIO65 218 PIO66 217 PIO67 180 PIO68 181 PIO69 182 PIO70 183 PIO71 184 PIO72 185 PIO73 186 PIO74 187 PIO75 216 PIO76 215 PIO77 188 PIO78 195 PIO79 SPEAKER 148 CLOCK0 182 CLOCK2 184 CLOCK5 78 CLOCK9 80 I/O 184 I/O 99 I/O50 129 I/O I/O 185 I/O 126 INPUT1 123/93 I/O I/O 181 I/O 54 INPUT3 124/17 I/O I/O 151 CLKIN 56 I/O53 125/16 I/O I/O 154 CLKIN 124 GCLOK2 128/92 I/O 注,EP1C3/6/12 器件的 4 个时钟脚的选择要看具体适配板。 174 I/O 179/28 I/O 178/153 I/O 177/152 I/O 175/29 I/O 36 PIO48 1 PIO10 2 PIO47 3 PIO14 4 PIO39 5 PIO38 6 PIO37 7 PIO36 8 PIO35 9 PIO34 10 PIO33 11 PIO32 12 PIO24 13 PIO25 14 PIO26 15 GND 16 A18/A19 VCC 32 A16 A18/A15/WE 31 A14(A15) A17/VCC 30 A12 WR/A14 29 A7 6264 A13 28 A6 62256 A8 27 A5 628128 A9 26 A4 2764 A11 25 A3 27256 OE 24 A2 27512 A10 23 A1 27010 CS1 22 A0 27020 D7 21 D0 27040 D6 20 D1 27080 D5 19 D2 D4 18 GND RAM/ROM D3 17 628128(PIN30->VCC,PIN3->A14, PIN29->WE, VCC PIO9 PIO49 PIO46 PIO45 PIN31->A15 ) 29C040(PIN31->WE,PIN1->A18, PIN30->A17,PIN3->A15,PIN29->A14) 27040(PIN31->A18,PIN30->A17, PIN3->A15,PIN29->A14) PIO11 27020(PIN30->A17,PIN3->A15, PIN29->A14) PIO12 PIO13 27010(PIN30->VCC,PIN3->A15, P29->A14) PIO62 注意,PIO62 同时是键11的信号线 PIO15 VCC PIO31 PIO30 GND RAM/ROM使能 PIO29 PIO28 87654321 拨码开关 PIO27 ON 滤波1 A/D使能 转换结束 比较器 DS8使能 5th使能 ROM使能 (拨码1:“ROM使能 ON”即将CS1接地) VCC 10K VR1 PIO23 PIO22 PIO21 PIO20 PIO19 PIO18 PIO17 PIO16 PIO8 拨码6 PIO32 PIO33 PIO35 拨码7 PIO34 21 20 19 18 8 15 14 17 msb2-1 2-2 2-3 2-4 ADECU018C0L9OCK10750KHZA 2-5 2-6 2-7 lsb2-8 AIN0 IN-0 26 7 EOC IN-1 27 25 ADD-A ADD-B (24) AIN1 1 0 +5V 2 22 ADD-C (23) ALE 9 ENABLE 6 START ref(+) ref(-) 12 16 拨码1:ROM/RAM使能,即它们的CS1接地 拨码2:默认关闭 向上拨,由厂家通知升级 拨码4:8数码管显示开关,默认打开 拨码5:应用LM311使能,见下图 拨码6:ADC0809转换结束使能,见左图 拨码7:ADC0809使能,默认关闭,见左图 拨码8:DAC0832输出滤波使能 6 7 J6 1 8 VGA 2 4 5 视频接口3 10 13 14 R76 200 R77 200 R78 200 R(PIO60) G(PIO61) B(PIO63) HS(PIO64) VS(PIO65) VCC 4 PIO76 5 PS/2上接口 PIO77 1 3 GND VCC 4 J7 PIO46 5 PS/2下接口 PIO45 1 3 GND 8 7 6 5 4 3 2 1 扬声器 (拨码8:“滤波1 ON”即连接滤波电容) 滤波1 译码器 译码器 译码器 译码器 译码器 译码器 译码器 译码器 D8 D7 D6 D5 D4 D3 D2 PIO15 PIO14 PIO13 PIO12 PIO11 PIO10 PIO9 D1 PIO8 D16 D15 D14 D13 D12 D11 D10 D9 键8 键7 键6 键5 键4 键3 键2 键1 SPEAKER 103 COMM 6 7.2K AOUT PIO19-PIO16 7 PIO23-PIO20 PIO27-PIO24 5 TL082/2 PIO31-PIO28 PIO35-PIO32 PIO39-PIO36 R72 VCC PIO43-PIO40 5.1K AIN0 PIO47-PIO44 CLOCK0 WR1 2 +12 CLOCK2 CLOCK5 CLOCK9 PIO15-PIO8 PIO7 PIO6 DAC0832 EU2 FB 9 51pFC27 IOUT1 11 28 1 IOUT2 12 3 10K +12 FPGA/CPLD 目标芯片 PIO5 PIO4 PIO3 PIO2 PIO1 PIO0 实验电路结构图 NO.5 PIO24 PIO25 PIO26 PIO27 PIO28 PIO29 PIO30 PIO31 7 D0 /CS 6 D1 WR2 5 D2 XFER 4 D3 A GND 16 D4 D GND 15 D5 14 D6 VREF 13 D7 VCC +5 VCC 1 18 17 3 10 8 20 4 TL082/1 -12 28 3 LM311 4 -12 PIO37 COMP (拨码5:“比较器ON”即 连接PIO37与COMP) 附图 1 实验电路结构图 NO.5 37

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。