您好,欢迎访问三七文档
初识DE2开发板2009-10-0921:39:25|分类:默认分类|标签:|字号大中小订阅DE2的资源DE2的资源非常丰富,包括1.核心的FPGA芯片-CycloneII2C35F672C6,从名称可以看出,它包含有35千个LE,在Altera的芯片系列中,不算最多,但也绝对够用。Altera下载控制芯片-EPCS16以及USB-Blaste对Jtag的支持。2.存储用的芯片有:512-KBSRAM,8-MbyteSDRAM,4-MbyteFlashmemory3.经典IO配置:拥有4个按钮,18个拨动开关,18个红色发光二极管,9个绿色发光二极管,8个七段数码管,16*2字符液晶显示屏,4.超强多媒体:24位CD音质音频芯片WM8731(Mic输入+LineIn+标准音频输出),视频解码芯片(支持NTSC/PAL制式),带有高速DAC视屏输出VGA模块。5.更多标准接口:通用串行总线USB控制模块以及A、B型接口,SDCard接口,IrDA红外模块,10/100M自适应以太网络适配器,RS-232标准串口,PS/2键盘接口6.其他:50M,27M晶振各一个,支持外部时钟,80针带保护电路的外接IO7.此外还有:配套的光盘资料,QutuarsII6软件,NiosII6.0IDE,例程与说明文档。DE2的使用关于DE2资料光盘的使用主要的可以参看他的用户手册,里面有关于DE2的资料的详细使用说明,板子的电路原理图,模块图,管脚图,和各个模块的Datasheet等等。可以这样来看:DE2_System:\DatasheetDE2板子上的各个模块的详细的官方Datasheet,来自各个芯片厂商。\DE2_demonstrations丰富的例程,里面很多适用的例子,比如SD_Music_Player.等\DE2_lab_exercisesDE2提供的试验内容,里面有很详细的操作步骤截图。\DE2_schematicsDE2板子资料,包括布线,电路板的资料\DE2_tutorials例如详细的讲解SOPCBuilder的使用。\DE2_user_manual用户使用指南与手册.综合的说明。\Altera_Debug_ClientDE2的调试工具,可以直接下载Nios处理器的汇编代码,C语言代码等。\DE2_control_panelDE2控制面板,直接操作DE2板子上的各个模块的工作状态。程序下载方法第一种成为RUN模式,需要将板上RUN/PROG开关(LCD旁)拨到RUN,是用USB-Blaster直接将sof文件烧到CycloneFPGA芯片,这样掉电之后就没有了,重启后需要再次烧写。第二种模式为AS模式,将RUN/PROG开关拨到PROG模式,然后在Qutuars下载模式设置为AS模式,选择pof文件下载,这样直接下载到EPCS16Configure芯片中,每次复位,会根据EPCS16里面的内容重新烧写CycloneII芯片。关于管脚分配当我们创建一个FPGA用户系统的时候,到最后要做的工作就是下载,在下载之前必须根据芯片的型号分配管脚,这样才能将程序中特定功能的管脚与实际中的FPGA片外硬件电路一一对应。通常的管脚分配使用的是拖拽法,然而在一个庞大的系统中,这样是非常的不现实,可以使用CSV文件分配法,方法是在QurtusII的Assignment菜单下面的ImportAssignment项中,定位到要分配的管脚文件即可(对于做Nios核必的通用管脚分配,可以参照de2_system\DE2_lab_exercises\DE2_pin_assignments.csv文件),这里有个前提,就是你的顶层文件管脚命名必须与CSV文件中管脚一致。所以顶层文件如果用Verilog来写的话那将更加的方便,当然这是对于对于做Nios核而言的,你可以直接从Demo中拷贝一个顶层文件作为你的顶层。只要稍加修改即可,也可以定义自己的额外管教分配。分配管脚的有一个方法是,直接修改工程文件夹里面的“qsf”文件,将相应的端口与芯片的预设相连即可。例如:认识NiosII系统现在开始写一些关于Nios的东西,初次接触NiosII,只能写一些简单初级的东西,主要是个人对它的一点认识,希望能对今后新手学习提供一定的帮助。NiosII,准确的说,是一个IP核,即知识产权核,使用特定的硬件描叙语言写成的一堆代码罢了,如果不将它烧到特定的FPGA或者CPLD芯片中是没有任何意义的。Altera的NiosII软核,说白了就是一个CPU,内部像其他处理器一样,都包括指令解码,地址译码,指令队列,中断管理,总线时须控制,DMA控制等等。NiosII还支持最多两套用户自定义指令集,者可以有用户自定义模块来实现。一个Nios系统应该至少包括一个NiosCPU,1个片上RAM(Onchip-RAM),当然还可以添加其他厂商的IPCore和自定义用户逻辑。这些模块共同使用者一块包含有大量逻辑阵列的FPGA芯片,组成片上可编程系统,也称为SOPC(SystemOnProgrammableChip)。这个片上系统然后与外电路连接,构成一个具有特定功能的完整的用户系统。下面给出一个NiosII系统的典型模块图:Avalon总线在这里不得不提Avalon总线,Avalon总线是NiosII系统各模块之间的纽带,它内部复杂,但对外部却保留着相对简单的接口,没有复杂的总线应答等等,因此我们可以很方便的使用它来连接我们的自定义模块。一个标准的用户逻辑与Avalon总线的接口并不需要包含所有的Avalon端口类型的接口,可以一般的有以下类型的信号中的部分:比如你的用户逻辑中主要负责采集数据给总线,那么你充当的角色就是数据的提供者,你至少应该给Avalon总线read,readdata,clk的接口,其中read为总线的读取请求信号,对用户模块为input,readdata信号为8,16,32位数据,对用户模块而言为output,clk为总线为你提供的统一时钟信号,可以为读取你的设备提供时钟。当然总线提供的reset信号可以用作你的设备的初始化。同理如果你是输出模块,从总线上面接收数据,那么你应该向Avalon总线提供write,writedata,clk的接口,如果你的模块即是输入又是输出,那么你应该他们都包括进去。还有就是Avalon总线提供的信号类型的名称,一般的是高电平有效,如果是低电平有效,那么在后面会加上一个“_n”例如reset是复位类型的信号(高电平复位),那么reset_n就是低电平有效。关与Avalon总线其他信号线,比如irq,readdatavalid,waitrequest,flush等等,用到的时候Google吧。利用SPOCBuilder创建NiosII系统QurtusII给我们提供了一个方便的创建Nios系统的工具,即SOPCBuilder,这个工具只有在新建了一个Quartus工程文件后才能使用。下面我们创建一个Qurtus工程:输入名称,定位文件位置以后,选择器件为我们使用的“CycloneII2C35”运行SPOCBuilder,新建Nios项目,输入名称,选择Verilog作为生成文件的语言:然后就是添加Nios系统组件了:首线添加nios_cpu:双击左边的系统模块NiosIIProcessor,弹出如下对话框:设置CPU类型,这里就使用最简单的一种。添加以后,你可以重新给CPU命名,名一个容易记忆的名称。然后就是选择一个最片上RAM,选择AvalonComponentsMemoryOn-ChipMemory(RAMorROM),双击就添加了,设置类型,选择的大小要根据开发板来定,比如我们使用的是DE2,那么最有最大Memory限制,根据情况而定。添加好了以后系统会自动将RAM与Avalon总线连上,窗口中个模块前面的曲线就是这个含义。这时一个最简单的系统就做好了。注意,此时如果点击生成“Generate”的话,会报错,你还必须制定CPU的bootAddress与resetAddress双击cpu_0模块,在弹出的属性对话框中,选择地址为你添加的On-chipMemory即可。当然你可以添加更多模块,也可以人工修改每个模块的基地址。但要注意的是若果要加上CFIFlashMemory(CommonFlashInterface)的话,必须要加上AvalonTristateBridge,即Avalon三态桥接器。通过AvalonTristateBridge来连接结Avalonmaster和AvalonSlave。如果你需要在运行的时候进行调试,你应该加上jtag_uart模块。你可以为你的模块选择参数,比如,你添加了一个PIO,可以选择它是输入还是输出,或者是输入输出都有,SOPCBuilder会根据你的参数产生相应的HDL文件,如图:你还可以为你加上的IO模块产生中断,比如在你自定义的模块中向Avalon总线提供irq类型的信号,那么在SOPCBuilder产生系统的时候会给你定义中断号,比如你添加4Bit的PIO给4个Button的时候,可以选择是否产生中断,如图:你还可以为指定为你的模块产生仿真元数据,提供给像ModelSim这样的仿真软件仿真信息,当然Qurtus自己也能够进行波形仿真。SPOCBuilder生成的文件SOPCBuilder生成的文件包括:核模块的ptf文件,.sopc_builder文件加下面的install.ptf文件,nios系统的顶层模块的HDL文件,例如:你的Nios工程名为nios,那么顶层文件名应该是nios_0.v,还包括了nios_0.v调用了各个子模块的Verilog文件。仿真文件和一些其他的其他的文件。其中ptf文件是Nios系统的描叙文件,此文件在后面创建NiosProject时候会用到,NiosIDE通过这个文件来生成并且编译NiosProject的库文件,以便你在用户C语言程序中引用。下面来看一个ptf文件:下面来看看它生成的另外一个文件:nios_0.v这是nios系统的核心模块,但是还不是顶层模块,它有时需要外部提供PLL时钟,或者是需要将自己模块的export管脚连接到核外用户逻辑上。看一个nios_0.v:一个nios系统主模块中包括很多module,但是只有只有一个module与模块的文件名相同,这个就是主模块,它调用了很多组件的HDL模块,然后将其他组件的export引脚对外暴露,各组件与CPU的连线即Avalon总线对外封闭。这里提一下核的顶层模块(这里是nios_0.v)里面的管脚命名规则:凡是input,则为“模块端口名称”+“to”+“模块实例名称”,凡是output,则为“模块端口名称”+“from”+“模块实例名称”例如上图中的nios_0.v的核中实例化了AUDIO_MOD模块,命名为the_AUDIO_MOD那么AUDIO_MOD的外部输入adcclk命名为:dacclk_to_the_AUDIO_MOD.基于Nios系统的顶层结构图这里说明以下,这里的系统顶层图不是Nios的顶层图,而是用户创建的项目的顶层图,它调用了用SOPCBuilder创建的nios系统顶层模块,除了包括系统的nios模块外,还包括一些核外用户逻辑,例如PLL时钟,I2C控制块等等。下面给出我们的音频系统的顶层结构图。我们可以在系统的顶层图中使用用户逻辑,此时的用户逻辑是与系统总线没有关系的,他是与Nios系统没有直接关系的电路,在这儿称之为“核外用户逻辑”,比如说在我们系统中的I2C对AV的配置(当然这也能够通过OpenI2C模块加到总线系统中去),核外逻辑可以用于与核无关的部分(直接连接到外部),也可以为核提供输入,或者接收输出。在Nios总线系统内部,也可以添加用户自定义逻辑,这时候成为用户自定义组件,InterfaceToUserLogics,但是这个时候就要和Avalon总线打交道了,因此必须满足Avalon总线的规则,下面就我们的系统中使用的模块做简单介绍。为Avalon总
本文标题:DE2开发板
链接地址:https://www.777doc.com/doc-3418678 .html