1 / 87

第 5 章 常用 EDA 工具软件

第 5 章 常用 EDA 工具软件. • 本章概要: 本章介绍几种目前世界上比较流行和实用的 EDA 工具软件,包括 Altera 公司的 Nios Ⅱ 、 ModelSim 和 Matlab ,以适应不同读者的需要。这些软件主要是基于 PC 机平台的,面向 FPGA 和 CPLD 或 ASIC 设计,比较适合学校教学、项目开发和相关的科研。 • 知识要点:( 1 ) ModelSim 工具软件的使用方法。 ( 2 )基于 Matlab/DSP Builder 的 DSP 模块设计。 ( 3 ) Nios Ⅱ 软件的使用方法

bryson
Download Presentation

第 5 章 常用 EDA 工具软件

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第5章 常用EDA工具软件 •本章概要:本章介绍几种目前世界上比较流行和实用的EDA工具软件,包括Altera公司的Nios Ⅱ、ModelSim和Matlab,以适应不同读者的需要。这些软件主要是基于PC机平台的,面向FPGA和CPLD或ASIC设计,比较适合学校教学、项目开发和相关的科研。 •知识要点:(1)ModelSim工具软件的使用方法。 (2)基于Matlab/DSP Builder的DSP模块设计。 (3)Nios Ⅱ软件的使用方法 •教学安排:本章作为选修内容,可安排6~8学时。读者可以根据不同的需要,在掌握Quartus II工具软件使用方法的基础上,进一步熟悉其他工具软件的使用方法,并了解这些软件的特性。 2014/9/10 1

  2. 5.1 ModelSim ModelSim是一种快速而又方便的HDL编译型仿真工具,不仅可以数字仿真,也可以模拟仿真。Altura公司的Quartus Ⅱ可以与ModelSim无缝连接,完成各种设计电路的仿真,因此在安装Quartus Ⅱ软件时,同时也可以安装ModelSim,在完成Quartus Ⅱ软件的注册后可以直接使用ModelSim(无需再注册) 下面以Quartus Ⅱ 9.0版本自带的ModelSim-ALTERA 6.4a版本为例,介绍ModelSim的使用方法,其他版本的使用方法基本类似。 2014/9/10 2

  3. 工具栏 工作区 命令窗口 ModeSim的主窗口界面 5.1.1 ModelSim的使用方法 ModelSim启动后,首先呈现出主窗口(Main Windows)界面,主窗口中包括命令窗口(Transcript)、工作区(Workspace)和工具栏。在命令窗口中可以输入ModelSim的命令,并获得执行信息;在工作区中用树状列表(Tree List)的形式来观察库(Library)、设计工程文件(Project)和设计仿真的结构。 2014/9/10 3

  4. 在使用ModelSim之前,应事先建立用户自己的工程文件夹,用于存放各种设计文件和仿真文件,然后还要建立work库。在VHDL中work是默认的工作库,因此ModelSim中必须首先建立一个work库,work库在建立ModelSim的第一个新工程(Project)就会自动生成,以后的其他工程也建立在此work库中。一般所有源代码都要编译到同一个库(包括VHDL和Verilog HDL)。ModelSim包含两类库,第一类是work(默认工作库),包括当前已经编译的设计单元,而且每次只能打开一个单元库。另一类是资源库,包括当前编译使用的参考设计单元,如VHDL的ieee.std_logic_1164库,这类库允许打开多个,并可以被VHDL中的Library和Use语句引用。 2014/9/10 4

  5. 建立新工程对话框 与QuartusⅡ设计类似,ModelSim要求每个设计都要建立工程,在工程的支持下完成设计文件的编译和仿真操作。在ModelSim的主窗口,执行“File”→“New”→“Project”命令,弹出建立新工程的对话框,,在对话框中填入要建立的新工程名称以及所在的文件夹,用鼠标左键单击(以下简称为“用鼠标单击”)“OK”按钮后,工程已被建立,在工作区中出现“Preject”标签页。 2014/9/10 5

  6. 添加项目到工程对话框 进入ModelSim编辑方式的界面 1. ModelSim编辑方法 当新建工程结束后,ModelSim会自动弹出添加项目到工程(Add items to the Project)对话框,用鼠标单击对话框中的“Create New File”图标,可以进入ModelSim的编辑新文件的出口,也可以在ModelSim的主窗口界面,执行“File”→“New”→“Source”→“VHDL”命令,即可进入ModelSim的VHDL(或Verilog HDL)编辑方式。 2014/9/10 6

  7. 在ModelSim的编辑方式(source)界面输入源程序(如VHDL十进制加法计数器),并保存在用户工程文件夹中(如用cnt10y.vhd为文件名)。cnt10y.vhd源程序如下:在ModelSim的编辑方式(source)界面输入源程序(如VHDL十进制加法计数器),并保存在用户工程文件夹中(如用cnt10y.vhd为文件名)。cnt10y.vhd源程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE ieee.Numeric_Std.ALL; ENTITY cnt10y IS PORT(clr:IN STD_LOGIC; clk:IN STD_LOGIC; q:BUFFER INTEGER RANGE 9 DOWNTO 0; cout:OUT STD_LOGIC); END cnt10y; ARCHITECTURE one OF cnt10y IS BEGIN 2014/9/10 7

  8. PROCESS(clr,clk) BEGIN IF clr='0' THEN q<=0; ELSIF clk'EVENT AND clk='1' THEN IF (q=9) THEN q<=0; cout<='0'; ELSE q<=q+1; cout<='1'; END IF; END IF; END PROCESS; END one; 2014/9/10 8

  9. 2. ModelSim编译方法 完成源程序的编辑后,在ModelSim编辑方式窗口执行“Compile”→“Compile”命令,在弹出的编译HDL源文件(Compile HDL Source File)对话框中,在“文件名”栏目下选中被编译的文件(如cnt10y)后,用鼠标单击“Compile”按钮,即可对源程序进行编译,如果不存在错误,则编译成功。编译成功后,cnt10y的设计实体就会出现在work库中。 3. ModelSim仿真方法 ModelSim仿真包括装载设计文件、设置激励信号和仿真等操作过程。 2014/9/10 9

  10. ModelSim的信号窗口 设计文件装载对话框 (1)装载设计文件 在ModelSim的主窗口,执行“Simulate”→“Start Simulate命令,在弹出仿真文件装载对话框中,用鼠标将work库中的cnt10y点黑选中,然后用鼠标单击“OK”按钮,即可完成设计文件的装载,此时工作区会出现“Sim”标签,表示装载成功。 2014/9/10 10

  11. (2)设置仿真激励信号 完成仿真文件的装载后,一般会自动弹出的目标(Objects)窗口,若目标窗口没有打开,可在ModelSim的主窗口,执行“View”→“Objects”命令,打开目标窗口,经过装载的十进制加法计数器设计电路的复位输入端clr、时钟输入端clk、计数器状态输出端q和进位输出端cout已在窗口内。 用鼠标右键点击目标窗口中的复位输入信号clr,弹出快捷菜单,在菜单中选择“Force”命令,弹出被选信号激励(Force Selected Signal)对话框,可以对被选信号进行Force赋值。在Force赋值对话框中将“Value:”中的数值改写为1,则为clr当前赋1值。另外,“Delay For:”中的值是信号赋值前的延迟时间,“Cancel After:”中的值是仿真取消后的值,这两个参数一般可以不填。被选激励信号的值确定后,用鼠标单击“OK”按钮结束Force赋值操作。 2014/9/10 11

  12. 选择端口信号操作示意图 当设计电路的全部激励信号设置完毕后,将ModelSim的Objects窗口中全部端口信号用鼠标全部选中,然后用鼠标右键点击这些被选型号,在弹出的快捷菜单中,执行“Add”→“To Wave”→“Selected Items”命令(在命令窗口上也可以执行上述命令),即可将选中的端口信号加入到ModelSim的波形(Wave)窗口中。 2014/9/10 12

  13. 十进制加法计数器的仿真波形 (3)仿真设计文件 在ModelSim的主窗口界面,执行“View”→“Wave”命令,打开波形(Wave)窗口。按动ModelSim的波形窗口上的“运行”按键,仿真波形将按照按一次键输出一个时钟周期的方式对设计电路进行仿真。在仿真期间,可以在ModelSim的Wave窗口用鼠标右键点击需要改变Force值的信号(如复位信号clr)在弹出的快捷菜单中执行“Force”命令,进入Force赋值对话框后,可以对被选的信号重新赋值,来验证信号的功能。十进制加法计数器设计电路的仿真结果如图所示。 2014/9/10 13

  14. 添加文件到工程对话框 5.1.2 ModelSim与Quartus II的接口 Quartus II完成的HDL设计文件,也可以用ModelSim进行仿真。进行仿真前,必须编译所以待仿真的HDL文件成为仿真库,在编译时获得优化,提高仿真速度。下面以嵌入式锁相环mypll为例,介绍ModelSim与Quartus II的接口方法。 执行ModelSim工作区窗口下的“Project”→“ Add to Project” →“Existing File”命令,弹出的添加文件到工程对话框,在对话框的“File Name”栏目下直接查找现有的HDL源文件所在位置和名称(如D:/myeda/mypll.vhd)后,用鼠标单击“OK”按钮,完成文件的添加。当添加的HDL文件通过编译后,源文件的设计实体就会出现在work库中。 2014/9/10 14

  15. 锁相环mypll的仿真结果 完成添加设计文件的编译后,即可采用上述的ModelSim仿真方法,对设计文件进行仿真。mypll的仿真结果如图所示。 2014/9/10 15

  16. 5.1.3 ModelSim交互命令方式仿真 ModelSim交互命令方式,是在ModelSim的主窗口的命令窗口上,通过输入命令来实现的,具有更好的调试和交互功能。实际在图形用户交互方式中,每点击一个图标命令时,在命令窗口就出现相关的命令。ModelSim提供了多种指令,既可以单步,也可以构成批处理文件,用来控制编辑、编译和仿真流程。 5.1.4 ModelSim批处理工作方式 如果采用单步指令来控制仿真流程,每次都要输入相应的指令,是很繁琐的事情。ModelSim提供了一个简化方式,即可以把这些命令形成一个批处理文件后再执行。如果读者对ModelSim的命令不熟悉,可以先用图形用户交互方式完成设计电路的仿真,然后把命令窗口中命令复制下来,构成批处理文件。 2014/9/10 16

  17. 在ModelSim的主窗口,执行“File”→“New”→“Source”→“DO”命令,进入ModelSim的DO文件编辑方式。在编辑窗口输入下列计数器仿真批处理文件(cnt10y.do)的代码:在ModelSim的主窗口,执行“File”→“New”→“Source”→“DO”命令,进入ModelSim的DO文件编辑方式。在编辑窗口输入下列计数器仿真批处理文件(cnt10y.do)的代码: vsim work.cnt10y //打开work库中的cnt10y文件 # Loading std.standard //打开VHDL相关库 # Loading ieee.std_logic_1164(body) # Loading ieee.numeric_std(body) # Loading work.cnt10y(one) force -freeze sim:/cnt10y/clr 1 0 //设置复位信号为1 force -freeze sim:/cnt10y/clk 1 0, 0 {50 ps} -r 100 //设置时钟 add wave \ //添加下列端口信号到波形窗口 {sim:/cnt10y/clr } \ {sim:/cnt10y/clk } \ {sim:/cnt10y/q } \ {sim:/cnt10y/cout } 2014/9/10 17

  18. run run 100 //执行100单位时间(ps) force -freeze sim:/cnt10y/clr 0 0 //设置复位信号为0 run 200 //执行200单位时间 force -freeze sim:/cnt10y/clr 1 0 //设置复位信号为1 run 2000 //执行2000单位时间 完成计数器仿真批处理文件的编辑后,用“cnt10ym.do”为文件名保存在与计数器设计文件相同的文件夹中(.do是DO文件的属性后缀),并通过ModelSim的编译。在ModelSim的命令窗口中执行“do cnt10y.do”,完成对计数器设计(cnt10y)的仿真。 2014/9/10 18

  19. 5.2 基于Matlab/DSP Builder的DSP模块设计 Matlab是当前国际控制界最流行的面向工程与科学计算的高级语言。Altera公司充分利用了Matlab的优势,将Quartus II与其进行无缝连接,完成DSP等复杂系统的设计。 本节介绍利用Matlab/DSP Builder工具进行DSP模块设计、Matlab模型仿真、SignalCompiler使用方法、使用Modelsim进行RTL级仿真、使用Quartus II实现时序仿真、使用Quartus II硬件实现与测试。 下面以一个简单的正弦信号调制电路的设计为例,介绍基于Matlab/DSP Builder的DSP开发技术。 2014/9/10 19

  20. 正弦信号发生器原理图 5.2.1 设计原理 正弦信号调制电路电路由阶梯信号发生器模块IncCounter、正弦函数值查找表模块SinLUT、延时模块Delay、乘法器模块Product、数据控制模块DATAIN和输出模块Output等6个部分构成。阶梯信号发生器模块IncCounter产生线性递增的地址信号,送往SinLUT查找表。SinLUT是一个正弦函数值的查找表模块,由递增的地址获得正弦波值输出,输出的8位正弦波数据经延时模块Delay后送往Product乘法模块,与DATAIN的数据相乘生成正弦波调制的数字信号,由Output输出。Output输出的数据送往D/A即可获得正弦调制信号。 2014/9/10 20

  21. 工作区 命令窗口 命令历史 Matlab软件界面 5.2.2 建立Matlab设计模型 利用Matlab建立DSP设计模型是基于Matlab/DSP Builder的DSP模块设计的主要过程。 1. 运行Matlab 启动后的Matlab软件界面面中有三个窗口,分别是命令窗口(Command Windows)、工作区(Workspace)、命令历史(Command History)。在命令窗口中,可以键入命令,同时得到响应信息、出错警告和提示等。 2014/9/10 21

  22. SignalCompilder组件图标 建立MATLAB设计模型的编辑窗口(右)和Simulink库管理器窗口(左) 2. 新建一个模型文件 在Matlab软件界面执行“File”菜单的“New”,在弹出的子菜单中选择“model”方式,弹出建立MATLAB设计模型的编辑窗口,设计电路的模型在此编辑窗口中完成编辑、分析、仿真控制和生成设计文件。 2014/9/10 22

  23. 3. 放置SignalCompiler图标 用鼠标左键点击Library browser窗口左侧的库内树形列表中的Altera DSP Builder条,展开DSP Builder库,再点击AltLab项展开AltLab库,用鼠标选中库管理器右侧的SignalCompiler组件图标,按住鼠标左键将SignalCompiler图标拖动到新模型窗口中。SignalCompiler组件图标是一个控制符号,用鼠标左键双击它时,可以启动软件对编辑窗口中的设计模型(电路)进行分析,并引导进入下一步的编译、适配和生成HDL代码文件操作。 2014/9/10 23

  24. IncCounter模块图标及其参数设置对话框 4. 放置Increment Decrement模块 用鼠标将Altera DSP Builder中的Arithmetic库展开,把库中的Increment Decrement模块(图标)拖放到新建模型编辑窗口中。Increment Decrement是阶梯信号发生器模块,用鼠标左键点击Increment Decrement模块下面的文字“Increment Decrement”,就可以修改模块名字。用此方法将模块名其修改为“IncCounter”。 2014/9/10 24

  25. SinLUT模块图标及其参数设置对话框 5. 放置SinLUT(正弦查找表)模块 用鼠标将Altera DSP Builder中的Gate & Control库展开,将库中的LUT模块拖放到新建模型编辑窗口,将模块的名字修改成“SinLUT”。用鼠标双击SinLUT模块,弹出inLUT模块参数设置对话框。在此对话框中,把Bus Type(总线宽度)设置为“Unsigned Integer”(无符号整数);把Output[number of bits](输出位宽)设置为“8”;把LUT Address Width(查找表地址线位宽)设置为“6”。 2014/9/10 25

  26. Delay模块图标及其参数设置对话框 6. 放置Delay模块 用鼠标将Altera DSP Builder中的Storage库展开,将库中的Delay模块拖放到新建模型编辑窗口。Delay是一个延时环节,用鼠标双击Delay模块,弹出Delay模块参数设置对话框。在Delay模块参数设置对话框中,参数Depth是设置信号延时的深度。当Depth为1时,延时传输函数为1/z1,表示信号传输延时1个时钟周期;当Depth为n时,延时传输函数为1/zn,表示信号传输延时n个时钟周期。 2014/9/10 26

  27. DATAIN模块图标及其参数设置对话框 7. 放置数据输入端口DATAIN模块 用鼠标将Altera DSP Builder中的IO & Bus库展开,将库中的Input模块拖放到新建模型编辑窗口,修改Input模块的名字为DATAIN。鼠标双击DATAIN模块,弹出的DATAIN模块参数设置对话框。在参数设置对话框中,把Bus Type设置为“Unsigned Integer”(无符号整数),把[number of bits].[]设置为“1”,表示该输入模块是1位无符号数据输入。该模块在生成HDL代码文件时,是一个名为DATAIN,宽度为1位的输入端口。 2014/9/10 27

  28. Product模块图标及其参数设置对话框 8. 放置乘法器Product模块 用鼠标将Altera DSP Builder中的Arithmetic库展开,将库中的Product模块拖放到新建模型编辑窗口。Product有两个输入,一个是经过一个Delay的SinLUT查表输出,另一个是外部1位端口DATAIN送来的数据,用DATAIN对SinLUT查找表输出的控制,产生正弦调制输出。用鼠标双击Product模块,弹出Product模块参数设置对话框,在Product模块参数设置对话框中,Pipeline参数是设置Product模块使用的流水线数,即控制Product的乘积延时几个脉冲周期后出现。 2014/9/10 28

  29. Output模块图标及其参数设置对话框 9. 放置输出端口Output模块 用鼠标将Altera DSP Builder中的IO & Bus库展开,将库中的Output模块拖放到新建模型编辑窗口。Output模块的图标如图5.56所示,用鼠标左键双击Output模块图标,弹出Output模块参数设置对话框。在参数设置对话框中,把Bus Type设置为“Unsigned Integer”(无符号整数),把[number of bits].[]设置为“8”,表示该输出模块是8位无符号数据输出。该模块在生成HDL代码文件时,是一个名为Output,宽度为8位输出端口。 2014/9/10 29

  30. Random Number模块图标及其参数设置对话框 5.2.3 Matlab模型仿真 1. 加入仿真激励模块 在Simulink管理器中,用鼠标将Simulink的Sources库展开,将库中的Random Number模块拖放到新建模型编辑窗口,用鼠标双击Random Number 模块图标,弹出Random Number模块参数设置对话框。 2014/9/10 30

  31. Scope模块图标(中)、Scope窗口(左)和Genera参数设置窗口(右)Scope模块图标(中)、Scope窗口(左)和Genera参数设置窗口(右) 2. 加入波形观察模块 用鼠标将Simulink的Sinks库展开,将库中的Scope(示波器)模块拖放到新建模型编辑窗口,用鼠标双击Scope(示波器)模块图标,弹出Scope窗口。用鼠标单击Scope窗口工具栏上的“Parameters”(参数设置)按钮(左起第二个工具按钮),弹出Scope模块参数设置对话框。 2014/9/10 31

  32. 仿真参数设置对话框 3. 设置仿真参数 在新建模型编辑窗口中,执行“Simulation”菜单的“Simulation Parameters”命令,弹出Simulation Parameters(仿真参数)设置对话框,其中“Start time”(开始时间)设置为“0.0”,“Stop Time”(结束时间)设定为500,其他设置按照默认。 2014/9/10 32

  33. 正弦波调制电路的仿真波形 4. 启动仿真 执行“Simulation”菜单的“Start”命令开始仿真。如果设计有错误,Matlab会有提示,改正错误后再仿真,直至设计错误为0时才能出现仿真结果。本例设计的正弦信号调制电路的仿真结果如图所示。 2014/9/10 33

  34. 启动DSP Builder对话框 SignalCompiler窗口 5.2.4 SignalCompiler使用方法 在Matlab中完成仿真验证后,就需要把设计转到硬件上加以实现。通过DSP Builder可以获得针对特定FPGA芯片的HDL代码。用鼠标左键双击FirstDSP模型窗口中的SignalCompiler模块图标,将启动DSP Builder,在出现对话框中点击“Analyze”按钮,SignalCompiler就会对FirstDSP模型进行分析,检查模型有无错误。如果设计存在错误,SignalCompiler就会停止分析过程,并在Matlab软件界面的命令窗口给出相关信息。如果设计不存在错误,则在分析结束后打开SignalCompiler窗口。 2014/9/10 34

  35. 5.2.5 使用Modelsim进行RTL级仿真 在simulink中进行仿真是对模型文件.mdl进行的,属于系统验证性质的仿真,并没有对生成的HDL代码文件进行仿真。 在对SignalCompiler进行设置时,将“Generate Stimuli for VHDL Testbench”选中后,DSP Builder在“MDL to VHDL”的模型文件转换过程会自动生成针对HDL仿真器Modelsim的测试文件,因此可以直接使用Modelsim对生成的VHDL代码进行功能仿真。仿真步骤如下: 打开Modelsim软件,执行Modelsim软件界面上“Tools”菜单的“Execute Macro…”命令,在弹出的文件选择对话框中,把文件目录切换到FirstDSP.vhd的工作目录(如myeda_q)下,在此目录中将“tb_FirstDSP.tcl”文件选中并打开,Modelsim软件就开始对tb_FirstDSP.tcl启动仿真,随后自动打开wave窗口,显示仿真结果。 2014/9/10 35

  36. 修改波形参数后的Modelsim仿真结果 Modelsim仿真结果 2014/9/10 36

  37. 5.3.6 使用Quartus II实现时序仿真 打开Quartus II集成环境,执行Quartus II软件界面上的“File” 菜单的“Open Project …”命令,在弹出的“Open Project”对话框中,选择FirstDSP模型所在工作目录,打开DSP Builder为Quartus II建立的设计项目“FirstDSP”,并在设计项目中打开VHDL顶层设计文件“firstdsp.vhd”。 在SignalCompiler中的Quartus II编译过程中,具体的器件由Quartus II自动决定,在实际使用中,需要选择具体器件型号。然后执行“Processing”菜单的“Start Compilation”命令对firstdsp.vhd顶层设计文件进行编译。 编译结束后,执行“Processing”菜单的“Start Simulation”命令,启动时序仿真。在仿真过程结束后,点击“Simulator Tool”(仿真工具)界面的“Repot”按钮,系统自动弹出Quartus II仿真波形界面,显示仿真结果。 2014/9/10 37

  38. FirstDSP设计文件的Quartus 仿真波形 2014/9/10 38

  39. 5.2.7 DSP Builder的层次设计 对于一个复杂的DSP系统设计,如果把所有的模块放在同一个DSP Builder的Simulink图中,设计图就变得非常庞大而复杂,不利于阅图和排错。利用DSP Builder的层次设计,就可以方便地解决这个难题。 DSP Builder的层次设计的思路是利用DSP Builder软件工具,将设计好的DSP模型生成子系统(SubSystem),这个子系统是一个的元件,可以独立工作,也可以与其他模块或子系统构成更大的设计模型,还可以作为基层模块,被任意复制到其他设计模型中。 2014/9/10 39

  40. 生成DSP Builder子系统操作过程 生成的子系统图 在Matlab软件界面打开正弦信号调制电路设计模型文件(即FirstDDS),用鼠标操作方式将模型文件中的全部模块及模块之间的连线选中(即将键盘的Shift按钮按下后,用鼠标左键点击要选中的模块或连线),但不要将SignalCompiler图标、仿真的激励模块Random Number和波形观察模块Scope选中。用鼠标右键点击原理图选中的部分,在弹出的快捷菜单中选择“Create subsystem”项,完成DSP Builder子系统的生成。生成的子系统如图所示。 2014/9/10 40

  41. 5.3 Nios II嵌入式系统开发软件 SOPC Builder是Altera公司推出的一种可加快在PLD内实现Nios II嵌入式处理器及其相关接口的设计工具。其功能与PC机应用程序中的“引导模板”类似,设计者可以根据需要确定处理器模块及其参数,选择所需的外围控制电路(如存储器控制器、总线控制器、I/O控制器、定时器等)和外设(如存储器、鼠标、按钮、LED、LCD、VGA等),创立一个完整的嵌入式处理器系统。SOPC Builder还允许用户修改已经存在的设计,为其添加新的设备和功能。 2014/9/10 41

  42. 5.3.1 Nios II的硬件开发 Nios II是一个用户可以自行定制的CPU,用户可以增加新的外设,增加新的指令,分配外设的地址等。Nios II的硬件开发就是由用户定制合适的CPU和外设。SOPC Builder提供了大量的IP Core来加快Nios II外设的开发速度,用户也可以使用VHDL或Verilog HDL来定制外设。 Nios II的硬件开发必须得到特定的开发板的硬件支持。下面以DE2(含DE2 70)开发板为例,介绍Nios II(9.0版本)硬件开发的具体流程。 在DE2开发板上,支持Nios II系统的外部设备包括SDRAM、SRAM、FLASH、LCD、七段数码管、发光二极管、按钮开关、电平开关、VGA、ISP1362、I2C器件等,大部分外部都采用Nios II软件提供的组件,但SRAM、七段数码管、VGA控制器和I2C器件属于DE2开发板自定义的组件,因此在进行Nios II系统开发之前,应将这些组件的程序包加入到Nios II的用户自定义组件(User Logic)中。 2014/9/10 42

  43. 在DE2开发板提供的用户光盘的\DE2\DE2_NIOS_HOST_MOUSE_VGA工程文件夹(或其他工程文件夹)中,包含SRAM、七段数码管、VGA控制器、I2C器件的程序包,它们分别是user_logic_SRAM_16Bits_512K、user_logic_SEG7_LUT_8、 user_logic_VGA_Controller和user_logic_Open_I2C。将这些程序包(文件夹)复制到用户工程(如SOPC_DE2)目录中,打开SOPC Builder软件后,在其组件库的“User Logic”项下,就可以找到这些自定义组件。对于新版DE2开发板上的组件程序包,DE2的组件名分别为SRAM_16Bits_512K、SEG7_LUT_8、Binary_VGA_Controller等,将这些组件的文件夹复制到工程目录中后,这些组件会出现在SOPC Builder软件组件库的“Terasic Technologies Inc”栏目下。 2014/9/10 43

  44. 1. 新建SOPC设计项目 设计前首先需要在Quartus II中建立一个设计项目,并选择Cyclone II系列的EP2C35F672C6或EP2C70F896C6器件为目标芯片(EP2C35F672C6是DE2开发板上的目标芯片,EP2C35F672C6是DE2 70开发板上的目标芯片)。 执行“Tools”菜单的“SOPC Builder…”命令,打开Quartus II集成环境的SOPC开发工具,呈现的SOPC Builder软件窗口界面。执行SOPC Builder软件窗口“File”菜单的“New system”命令,弹出“Create New System”对话框,在对话框中输入需要建立的SOPC系统的名称(例如使用nios_0为工程名称),设定语言为VHDL或Verilog HDL(建议使用Verilog HDL)。完成设定后用鼠标单击“OK”按钮,进入SOPC Builder设计。 2014/9/10 44

  45. SOPC Builder软件窗口界面 SOPC Builder界面分成三个部分,界面左边是组件(Nios II嵌入式系统元件)选择栏,用树型结构列出了SOPC Builder的组件;右边空白处用于加入用户定制Nios II系统的组件;下方是提示栏,用于显示SOPC Builder的提示信息和警告错误信息。在界面的右上方,可以选择器件系列和系统工作频率。 2014/9/10 45

  46. 2. 加入Nios II系统的组件 基本的SOPC系统大致可以分为FPGA、存储器和外围元件三个部分。FPGA部分的核心是NIOS CPU CORE(CPU核),设计工作主要在FPGA部分进行。 基于DE2开发板的Nios II系统包含NIOS CPU CORE(CPU核)、通用异步通信总线JTAG UART、串口UART、按钮开关BUTTON PIO、电平开关SW PIO、绿色LED 、红色LED、七段数码管、Avalon三态总线桥、片外SRAM、Timer(定时器)、LCD(液晶显示器)、Flash(快闪存储器)、FLASH控制器、SDRAM控制器、系统ID组件、I2C(I2C组件)、VGA控制器和ISP1362(USB控制器)。 2014/9/10 46

  47. (1)加入NIOS CPU CORE(CPU核) 在SOPC Builder的组件库中,用鼠标双击Component Library(组件库)中的“Nios II Processor”项,弹出添加新的Nios II(CPU核)对话框。 在对话框中提供Nios II系列微处理器的三个成员供选择: ① Nios II/e(经济型)成员,具有占用最小逻辑的优化,占用600~700LEs(逻辑元件)。 ② Nios II/f(快速型)成员,具有高性能的优化,占用1400~1800LEs。 ③ Nios II/s(标准型)成员,在占用逻辑和高性能优化方面的性能居中,占用1200~1400LEs。 2014/9/10 47

  48. 组件操作快捷菜单 选择Nios II后的SOPC Builder界面 本设计选择标准型Nios II/s成员。完成设置后,系统将“cpu_0”作为一个CPU核组件已经加入SOPC系统,并显示该系统已经有instruction_Master(指令主控器)、data_Master(数据总线主控器)和jtag_debug_module(JTAG调试模式)存在。用鼠标右键点击选中“cpu_0”,弹出组件操作快捷菜单,在快捷菜单中选择“Rename”项,可以更改组件名称(本设计保持默认为“cpu_0”)。在快捷菜单中还可以选择“Edit…”(编辑)、“Lock Base Address”(锁定地址)等操作。 2014/9/10 48

  49. 加入JTAG UART对话框 (2) 加入JTAG UART JTAG UART(JTAG通用异步通信总线)用于Flash存储器的读写控制。用鼠标双击组件库中的“Interfase”→“Serial”栏目下的“JTAG UART”项,在弹出加入JTAG UART属性对话框中。对话框中各参数保持默认值不变,完成JTAG UART组件的加入后,组件名称保持默认的“jtag_uart_0”不变。 2014/9/10 49

  50. 加入UART对话框 (3) 加入UART UART是常用的串口,Nios II系统可以通过UART串口与计算机通信,也用于NIOS系统的仿真调试。用鼠标双击组件库中的“Interfase”→“Serial”栏目下的“UART(RS232 series port)”项,弹出UART属性对话框。在对话框中选择波特率为115200,其余参数保持默认设置,完成UART的加入后,组件名称保持默认的“uart_0”不变。 2014/9/10 50

More Related