相比于MCS51,或者ARM,Nios II这种软核处理器的第一个特别有用的特性是可以方便得添加客户定制逻辑。这是一个非常有趣并且重要的特性。在这里,我粗略得介绍一下在Nios II开发环境中如何添加客户定制逻辑;更加详细的帮助信息请您参考Altera公司提供的文档。如果本文能对您有一点点帮助,我都会感到非常高兴。
1、准备工作:
在这前,有几个准备工作要做:
我使用ezNiosDKC6B作为待调试的开发板,向其中添加PWM输出,因为PWM也确实是一个很有用的功能。你可以举一反三,在自己的系统中引入客户逻辑。
2、创建自己的客户逻辑:
1.首先,在QuartusII中打开任意一个项目,然后,打开Tools -> Sopc Builder,在这里,我们只是为了打开sopc builder这个组件而已。
2.选择File -> New Component,
3.这样就会打开New Component先导
4.在HDL Files选项卡中,选择Add HDL File,然后打开avalon_slave_pwem_source目录(本站提供),选中下图中的三个文件(avalon_slave_pwm.v, pwm.v,reg_file.v)。(一次只能选中一个文件,需要按住Crtl键,然后依次选择三个文件,就可以像下图中,同时选中三个文件了)。然后选择 打开
5.可以看到添加三个文件,绿色的闪烁的条纹表明系统正在分析该文件。Top Level Module:默认是alalon_slave_pwm.v:alalon_slave_pwm,如果不是,请改正为alalon_slave_pwm。
6.下面进入Signals选项卡,进行输入、输出信号的设置。
如下图,首先把resetn的类型设置为reset_n,
7.请按照设置resetn的方法,设置各个信号。设置完成以后,如下图所示。
8.然后进入Interfaces选项卡,修改Read Wait = 0, Write Wait = 0,如下图所示。
9.进入SW Files选项卡,选择Add SW File,为系统添加SW Files;首先打开 avalon_slave_pwm_source\HAL\inc下的altera_avalon_pwm_routines.h,为系统添加该文件。
10.依次添加avalon_slave_pwm_source\inc\altera_avalon_pwm00.h ,avalon_slave_pwm_source\HAL\src\altera_avalon_pwm_routines.c,并请按照下图设置 Type。
11.最后选择Finish,生成系统。系统会在您运行该软件的目录下生成一个文件夹:avalon_slave_pwm。
12.然后,把该文件夹拷贝到系统的默认搜索路径:安装路径\components\下,比如G:\w2k\EDA\FPGA\altera\kits\niosII1_1B131\components,这样可以省去许多麻烦。
3、使用上述客户逻辑:
接下来,请您参考我之前写的文章“FPGA也疯狂(五)--Step By Step创建标准(Standard)niosII系统”,生成一个标准系统。比如,我生成一个系统,ezC6Be_PWM,来使用该PWM。
在sopc_builder中,可以看到,在components列表中,已经有了该组件(如果没有看到,请选择File->refrech刷新componments列表)。
1 双击avalon_slave_pwm,添加该组件到您的sopc系统中。
2 我为这个sopc系统添加了两个pwm,分别命名为:avalon_slave_pwm_0以及avalon_slave_pwm_1,如下图:
3 然后,我修改led_pio,把修改为2,这样可以释放出两个led来给PWM使用。
4 然后,使用上一步生成的sopc系统。比如,我创建了ezC6Be_PWM.bdf来使用sopc_ezC6Be_PWM.bsf。如下图:
5 我把pwm_out_from_the_avalon_slave_pwm_0接到LED[2],pwm_out_from_the_avalon_slave_pwm_0接到LED[3],这样可以通过LED的亮度来观察PWM的输出。
6 其余步骤请您参考我之前写的文章“FPGA也疯狂(五)--Step By Step创建标准(Standard)niosII系统”,
最后选择Start Compilation来编译这个系统。应该又是漫长的等待之后。
7 常见问题:
许多朋友可能会遇到如下问题:
提示找不到register_file,这通常是因为Sopc Builder没有正确得拷贝文件到当前目录下,或者QuartusII傻得找不到该文件了。
请按照如下方法处理:
1 检查当前项目的文件夹下(比如我检查ezC6Be_PWM),是否有如下文件:pwm.v,reg_file.v。如果没有,可能是创建客户逻辑的时候有问题,SOPC Builder没有自动拷贝这些文件,请手动从avalon_slave_pwm_source拷贝一下吧!
2 如果检查当前项目的文件夹下(比如我检查ezC6Be_PWM),已经有如下文件 pwm.v,reg_file.v。那么是QuartusII傻得找不到该文件了。 请打开QuartusII中的Assignments -> Settings,在Files选项卡中,手动增加pwm.v,reg_file.v两个文件,即可以解决。
4、通过软件访问、使用客户逻辑:
1。编译成功之后,可以打开Nios IDE,首先请参考我之前写的文章“FPGA也疯狂(五)--Step By Step创建标准(Standard)niosII系统”,基于上述系统(比如我的cpu名字cpu_ezC6Be_PWM),创建一个以 hello_world为模板的项目。我把这个项目命名为ezC6Be_PWM_hello_2pwm_0
2。然后,删除hello_world.c。把文件hello_2pwm.c(本站提供,在avalon_slave_pwem_source目录下)拷贝到项目ezC6Be_PWM_hello_2pwm_0的目录下,比如我把它放到H:\DB2005\project\niosDK\CD\CD1\ Example\ezNiosC6B\ezC6Be_PWM\software\ezC6Be_PWM_hello_2pwm_0中。
3。请按照如下设置系统library属性:
4。最后选择Project -> Build Project,编译整个项目。
用户266228 2010-10-21 16:02
用户42640 2007-10-10 08:15