用户工具

站点工具


niosii_基于内部ram建立第一个软核

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
niosii_基于内部ram建立第一个软核 [2020/07/03 11:48]
zgf
niosii_基于内部ram建立第一个软核 [2022/03/22 10:30] (当前版本)
sean
行 3: 行 3:
 |技术支持电话|**0379-69926675-801**||| |技术支持电话|**0379-69926675-801**|||
 |技术支持邮件|Gingko@vip.163.com||| |技术支持邮件|Gingko@vip.163.com|||
-|技术论坛|http://​www.eeschool.org||| 
 ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^ ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^
 |  V1.0  |  2020-07-03 ​ |  gingko ​ |  初次建立 ​ |  |  V1.0  |  2020-07-03 ​ |  gingko ​ |  初次建立 ​ | 
行 44: 行 43:
 {{ :​icore4:​icore4_fpga_18_10.png?​direct |图18-10}} {{ :​icore4:​icore4_fpga_18_10.png?​direct |图18-10}}
 11、点击Save As保存。 11、点击Save As保存。
-{{ :​icore4:​icore4_fpga_18_11.png?​direct |图18-12}}+{{ :​icore4:​icore4_fpga_18_11.png?​direct |图18-11}}
 12、使用默认名字保存即可。 12、使用默认名字保存即可。
-{{ :icore4:icore4_fpga_18_13.png?direct |图18-14}}+{{ :icore4:icore4_fpga_18_12.png?direct |图18-12}}
 至此,QuartusII工程和顶层设计文件都已建立完成,接着设计nios软核。 至此,QuartusII工程和顶层设计文件都已建立完成,接着设计nios软核。
  
 13、点击菜单栏中的Tool->​Qsys。 13、点击菜单栏中的Tool->​Qsys。
-{{ :icore4:icore4_fpga_18_15.png?direct |图18-16}}+{{ :icore4:icore4_fpga_18_13.png?direct |图18-13}}
 14、弹出以下窗口。 14、弹出以下窗口。
-{{ :icore4:icore4_fpga_18_17.png?direct |图18-17}}+{{ :icore4:icore4_fpga_18_14.png?direct |图18-14}}
 15、接下来添加IP核,在左边的Library里,选择Embeded Pocessors->​Nios II Processor,​点击Add…添加。 15、接下来添加IP核,在左边的Library里,选择Embeded Pocessors->​Nios II Processor,​点击Add…添加。
-{{ :icore4:icore4_fpga_18_18.png?direct |图18-18}}+{{ :icore4:icore4_fpga_18_15.png?direct |图18-15}}
 16、选择Nois II/​f,​点击Finish。 16、选择Nois II/​f,​点击Finish。
-{{ :icore4:icore4_fpga_18_19.png?direct |图18-19}}+{{ :icore4:icore4_fpga_18_16.png?direct |图18-16}}
 17、在左边的Library里,选择Menories and Memory Controllers->​On-Chip->​On-Chip Memory,​点击Add…添加。 17、在左边的Library里,选择Menories and Memory Controllers->​On-Chip->​On-Chip Memory,​点击Add…添加。
-{{ :icore4:icore4_fpga_18_20.png?direct |图18-20}}+{{ :icore4:icore4_fpga_18_17.png?direct |图18-17}}
 18、将Total memory size 设为10240,然后点击Finish。 18、将Total memory size 设为10240,然后点击Finish。
-{{ :icore4:icore4_fpga_18_21.png?direct |图18-21}}+{{ :icore4:icore4_fpga_18_18.png?direct |图18-18}}
 19、在左边Library里,选择Peripherals->​Debug and Performance->​System ID Peripheral,​点击Add…添加。 19、在左边Library里,选择Peripherals->​Debug and Performance->​System ID Peripheral,​点击Add…添加。
-{{ :icore4:icore4_fpga_18_22.png?direct |图18-22}}+{{ :icore4:icore4_fpga_18_19.png?direct |图18-19}}
 20、修改下图中System ID的数字,System ID的数字可以任意设置,默认值为0,本例改为1234,然后点击Finish。 20、修改下图中System ID的数字,System ID的数字可以任意设置,默认值为0,本例改为1234,然后点击Finish。
-{{ :icore4:icore4_fpga_18_23.png?direct |图18-23}}+{{ :icore4:icore4_fpga_18_20.png?direct |图18-20}}
 21、在左边Library里,选择Peripherals->​Microcontroller Peripherals->​PIO(Parallel I/​O),​点击Add…添加。 21、在左边Library里,选择Peripherals->​Microcontroller Peripherals->​PIO(Parallel I/​O),​点击Add…添加。
-{{ :icore4:icore4_fpga_18_24.png?direct |图18-24}}+{{ :icore4:icore4_fpga_18_21.png?direct |图18-21}}
 22、将下图的Width(1-32 bits)中8改为1,本例只用一个IO口,在Direction中选择output。 22、将下图的Width(1-32 bits)中8改为1,本例只用一个IO口,在Direction中选择output。
-{{ :icore4:icore4_fpga_18_25.png?direct |图18-25}}+{{ :icore4:icore4_fpga_18_22.png?direct |图18-22}}
 23、至此,IP核添加完毕,添加过的IP核都显示在窗中,如下。 23、至此,IP核添加完毕,添加过的IP核都显示在窗中,如下。
-{{ :icore4:icore4_fpga_18_26.png?direct |图18-26}}+{{ :icore4:icore4_fpga_18_23.png?direct |图18-23}}
 24、右击pio_o,点击Rename修改名字,改为led。 24、右击pio_o,点击Rename修改名字,改为led。
-{{ :icore4:icore4_fpga_18_27.png?direct |图18-27}}+{{ :icore4:icore4_fpga_18_24.png?direct |图18-24}}
 25、在led下的external_connection后面,点击Double-click to,​并修改为fpga_led,​修改后如下图: 25、在led下的external_connection后面,点击Double-click to,​并修改为fpga_led,​修改后如下图:
-{{ :icore4:icore4_fpga_18_28.png?direct |图18-28}}+{{ :icore4:icore4_fpga_18_25.png?direct |图18-25}}
 26、双击clk_0进入下面界面,将时钟更改为25M,​然后点击finish。 26、双击clk_0进入下面界面,将时钟更改为25M,​然后点击finish。
-{{ :icore4:icore4_fpga_18_29.png?direct |图18-29}}+{{ :icore4:icore4_fpga_18_26.png?direct |图18-26}}
 27、接下来是IP核的时钟线、信号线的连接,在nios中,只需将时钟和clk_0的时钟连接,右击nios2_qsys_0下的clk,​在第一项nios_qsys_0.clk Connection中点击选中clk_0.clk,​选中之后查阅时可发现在其前有对号,如下图: 27、接下来是IP核的时钟线、信号线的连接,在nios中,只需将时钟和clk_0的时钟连接,右击nios2_qsys_0下的clk,​在第一项nios_qsys_0.clk Connection中点击选中clk_0.clk,​选中之后查阅时可发现在其前有对号,如下图:
 +{{ :​icore4:​icore4_fpga_18_27.png?​direct |图18-27}}
 +{{ :​icore4:​icore4_fpga_18_28.png?​direct |图18-28}}
 +28、按照上述方法将onchipmemory、sysid、led三个模块的时钟线与clk_0连接,连接后如图所示:
 +{{ :​icore4:​icore4_fpga_18_29.png?​direct |图18-29}}
 +29、在onchipmemory中,信号线(s1)需要和nios的数据线、指令线都连接,如下图所示。
 {{ :​icore4:​icore4_fpga_18_30.png?​direct |图18-30}} {{ :​icore4:​icore4_fpga_18_30.png?​direct |图18-30}}
 +30、在sysid中,信号线(control)和nios的数据线连接,如下图所示。
 {{ :​icore4:​icore4_fpga_18_31.png?​direct |图18-31}} {{ :​icore4:​icore4_fpga_18_31.png?​direct |图18-31}}
-28、按照上述方法将onchipmemory、sysid、led三个模块时钟线与clk_0连接,连接后如图所示:+31led中,信号线(s1)需要和nois数据线连接,如
 {{ :​icore4:​icore4_fpga_18_32.png?​direct |图18-32}} {{ :​icore4:​icore4_fpga_18_32.png?​direct |图18-32}}
-29在onchipmemory中,信号线(s1)需要和nios的数据线、指令线都,如下图所示+32、连线完毕后修改Nios内核,双击nios2_qsys_0,弹出下界面,按照下图红框内容修改,然后点击Finish
 {{ :​icore4:​icore4_fpga_18_33.png?​direct |图18-33}} {{ :​icore4:​icore4_fpga_18_33.png?​direct |图18-33}}
-30、在sysid中,信号线(control)和nios的数据线连接,如下图所示+33、在菜单里选择System->​Creat Global Reset Net Work,连接复位线
 {{ :​icore4:​icore4_fpga_18_34.png?​direct |图18-34}} {{ :​icore4:​icore4_fpga_18_34.png?​direct |图18-34}}
-31、在led中,信号线(s1)需要和nois的数据线连接,如下图+34、在菜单栏里选择system->​Assign Base Addresses,​分配基地址
 {{ :​icore4:​icore4_fpga_18_35.png?​direct |图18-35}} {{ :​icore4:​icore4_fpga_18_35.png?​direct |图18-35}}
-32连线完毕后,修改Nios内核,双击nios2_qsys_0,弹出下界面按照图红框内容修改然后点击Finish+35至此果没有错误角将显示0个错误0个警告
 {{ :​icore4:​icore4_fpga_18_36.png?​direct |图18-36}} {{ :​icore4:​icore4_fpga_18_36.png?​direct |图18-36}}
-33、在菜单里选择System->Creat Global Reset Net Work,​连接复位线+36、在菜单里选择File->Save As 保存,保存到工程所在的文件中,命名为ledcore
 {{ :​icore4:​icore4_fpga_18_37.png?​direct |图18-37}} {{ :​icore4:​icore4_fpga_18_37.png?​direct |图18-37}}
-34、在菜单栏里选择system->​Assign Base Addresses,​分配基地址。 
 {{ :​icore4:​icore4_fpga_18_38.png?​direct |图18-38}} {{ :​icore4:​icore4_fpga_18_38.png?​direct |图18-38}}
-35至此如果没有错误,左下角将显示0个错误,0个警告+37在菜单栏里选择Generate->​Generate
 {{ :​icore4:​icore4_fpga_18_39.png?​direct |图18-39}} {{ :​icore4:​icore4_fpga_18_39.png?​direct |图18-39}}
-36在菜单栏里选择File->​Save As 保存,保存到工程所在的文件中,命名为ledcore+38点击Generate进行编译
 {{ :​icore4:​icore4_fpga_18_40.png?​direct |图18-40}} {{ :​icore4:​icore4_fpga_18_40.png?​direct |图18-40}}
 +39、编译完成后,点击close即可。
 {{ :​icore4:​icore4_fpga_18_41.png?​direct |图18-41}} {{ :​icore4:​icore4_fpga_18_41.png?​direct |图18-41}}
-37、在菜单栏里选择Generate->​Generate+40关闭内核Qsys窗口,建立的顶层文件led.bdf的空白处双击
 {{ :​icore4:​icore4_fpga_18_42.png?​direct |图18-42}} {{ :​icore4:​icore4_fpga_18_42.png?​direct |图18-42}}
-38、点击Generate进行编译+41弹出如下窗口,选择在Qsys中生成ledcore,​然后点击OK
 {{ :​icore4:​icore4_fpga_18_43.png?​direct |图18-43}} {{ :​icore4:​icore4_fpga_18_43.png?​direct |图18-43}}
-39编译完成后close即可+42拖动鼠标至合适位置左键放置
 {{ :​icore4:​icore4_fpga_18_44.png?​direct |图18-44}} {{ :​icore4:​icore4_fpga_18_44.png?​direct |图18-44}}
-40关闭内核Qsys窗口,在建立的顶层文件led.bdf的空白处击。+43再次双击顶层文件led.bdf的空白处,​在弹出的下面窗口中,​在name下方输入VCC,​点OK
 {{ :​icore4:​icore4_fpga_18_45.png?​direct |图18-45}} {{ :​icore4:​icore4_fpga_18_45.png?​direct |图18-45}}
-41弹出如下窗口,选择Qsys中生成ledcore,​然后OK。+44把VCC放在ledcore的rest_rest_n引脚附近,​并连线(把VCC和rest_rest_n连接将鼠标放在引脚处.会自动出现连线标志),然后选择Generate Pins For Sysmblen Ports自动生成管脚,​如下图:​
 {{ :​icore4:​icore4_fpga_18_46.png?​direct |图18-46}} {{ :​icore4:​icore4_fpga_18_46.png?​direct |图18-46}}
-42拖动鼠标至合适位置,单击左键放置。+45生成管脚,​如下图所示:​
 {{ :​icore4:​icore4_fpga_18_47.png?​direct |图18-47}} {{ :​icore4:​icore4_fpga_18_47.png?​direct |图18-47}}
-43再次双击顶层文件led.bdf空白处,在弹出的下面窗口中,​在name下方输入VCC,点击OK+46、双击ledcoreinput管脚,将名字修改为CLK_25M,点击OK;​然后用同样的方法将output管脚的名字改为FPGA_LEDB,​修改后如下图所示:
 {{ :​icore4:​icore4_fpga_18_48.png?​direct |图18-48}} {{ :​icore4:​icore4_fpga_18_48.png?​direct |图18-48}}
-44把VCC放在ledcore的rest_rest_n引脚附近,并连线(把VCC和rest_rest_n连接将鼠标放在引脚处.会自动出现连线标志),​然后右击选择Generate Pins For Sysmblen Ports自动生成管脚,​如下图:​+47点击Assignment,选择Device。
 {{ :​icore4:​icore4_fpga_18_49.png?​direct |图18-49}} {{ :​icore4:​icore4_fpga_18_49.png?​direct |图18-49}}
-45生成管脚,​如下图所示:+48弹出如下界面,点击Device and Pin Options...
 {{ :​icore4:​icore4_fpga_18_50.png?​direct |图18-50}} {{ :​icore4:​icore4_fpga_18_50.png?​direct |图18-50}}
-46双击ledcore的input管脚,​将名字修改为CLK_25M,​点击OK;​然后用同样方法将output管脚的名字改为FPGA_LEDB,​修改后如图所示:+49、点击左边分类栏中Unused Pins,在右边拉菜单里选择As input tri_stated。
 {{ :​icore4:​icore4_fpga_18_51.png?​direct |图18-51}} {{ :​icore4:​icore4_fpga_18_51.png?​direct |图18-51}}
-47、点击Assignment,选择Device+50、点击左边分类栏中的Dual-Purpose pins,在右边的Vaule各下拉菜单中,都选择Used as reguar I/​O,点击OK
 {{ :​icore4:​icore4_fpga_18_52.png?​direct |图18-52}} {{ :​icore4:​icore4_fpga_18_52.png?​direct |图18-52}}
-48弹出如下界面,点击Device and Pin Options...+51会到主界面,点击Assignment,选择Setting。
 {{ :​icore4:​icore4_fpga_18_53.png?​direct |图18-53}} {{ :​icore4:​icore4_fpga_18_53.png?​direct |图18-53}}
-49、点击左边分类栏中的Unused Pins,在右边下拉菜单里选择As input tri_stated+52、点击Files,在ledcore->​synthesis找到ledcore.qip文件,再点击Add添加
 {{ :​icore4:​icore4_fpga_18_54.png?​direct |图18-54}} {{ :​icore4:​icore4_fpga_18_54.png?​direct |图18-54}}
-50点击左边类栏中的Dual-Purpose pins在右边的Vaule各下拉菜单中都选择Used as reguar I/​O,点击OK+53文件添加完成后,为输入时钟CLK_25M和输出管脚FPGA_LEDB配引脚,​回到QuartusII主界面保存然后编译至此,​Nois软核建立完成并下载到FPGA
 {{ :​icore4:​icore4_fpga_18_55.png?​direct |图18-55}} {{ :​icore4:​icore4_fpga_18_55.png?​direct |图18-55}}
-51会到主界面,点击Assignment,选择Setting+54打开Nios软件选择正确路径(与QuartusII路径相同)点击OK
 {{ :​icore4:​icore4_fpga_18_56.png?​direct |图18-56}} {{ :​icore4:​icore4_fpga_18_56.png?​direct |图18-56}}
-52、点击Files,在ledcore->​synthesis找到ledcore.qip文件,再点击Add添加。 
 {{ :​icore4:​icore4_fpga_18_57.png?​direct |图18-57}} {{ :​icore4:​icore4_fpga_18_57.png?​direct |图18-57}}
-53文件添加完成后,为输时钟CLK_25M和输出管脚FPGA_LEDB分配引脚,​回到QuartusII主界面保存然后编译至此,​Nois软核建立完成,并下载到FPGA+55Nois主界面按下图所示建立新的工程模板
 {{ :​icore4:​icore4_fpga_18_58.png?​direct |图18-58}} {{ :​icore4:​icore4_fpga_18_58.png?​direct |图18-58}}
-54、打开Nios软件选择正确路径(与QuartusII路径相同)点击OK+56点击下图红框处,打开内核(即刚才生成的ledcore.sopcinfo文件)。
 {{ :​icore4:​icore4_fpga_18_59.png?​direct |图18-59}} {{ :​icore4:​icore4_fpga_18_59.png?​direct |图18-59}}
 +57、在Projict Name中,给工程命名为led,在Template一栏中选择Hello word small,点击finish。
 {{ :​icore4:​icore4_fpga_18_60.png?​direct |图18-60}} {{ :​icore4:​icore4_fpga_18_60.png?​direct |图18-60}}
-55进入Nois主界面后,按下图所示建立工程模板+58工程led中找到hello_world.c,右键选择rename
 {{ :​icore4:​icore4_fpga_18_61.png?​direct |图18-61}} {{ :​icore4:​icore4_fpga_18_61.png?​direct |图18-61}}
-56、点击下图红框处,打开内核(即刚才生成的ledcore.sopcinfo文件)+59命名为main.c,点击OK
 {{ :​icore4:​icore4_fpga_18_62.png?​direct |图18-62}} {{ :​icore4:​icore4_fpga_18_62.png?​direct |图18-62}}
-57、在Projict Name中,给工程命名为led,在Template一栏中选择Hello word small,点击finish。 
-{{ :​icore4:​icore4_fpga_18_63.png?​direct |图18-63}} 
-58、在新建工程led中找到hello_world.c,右键选择rename。 
-{{ :​icore4:​icore4_fpga_18_64.png?​direct |图18-64}} 
-59、命名为main.c,点击OK。 
-{{ :​icore4:​icore4_fpga_18_65.png?​direct |图18-65}} 
 60、双击main.c将其打开,删除原有内容,并输入以下内容: 60、双击main.c将其打开,删除原有内容,并输入以下内容:
 <code c> <code c>
行 200: 行 199:
 </​code>​ </​code>​
 61、编写完成后如下图所示: 61、编写完成后如下图所示:
-{{ :icore4:icore4_fpga_18_66.png?direct |图18-66}}+{{ :icore4:icore4_fpga_18_63.png?direct |图18-63}}
 62、点击保存,然后编译led工程,右击led,选择build project。 62、点击保存,然后编译led工程,右击led,选择build project。
-{{ :icore4:icore4_fpga_18_67.png?direct |图18-67}} +{{ :icore4:icore4_fpga_18_64.png?direct |图18-64}} 
-{{ :icore4:icore4_fpga_18_68.png?direct |图18-68}}+{{ :icore4:icore4_fpga_18_65.png?direct |图18-65}}
 63、右击led选择Run As->​3NiosII Hardware。 63、右击led选择Run As->​3NiosII Hardware。
-{{ :icore4:icore4_fpga_18_69.png?direct |图18-69}}+{{ :icore4:icore4_fpga_18_66.png?direct |图18-66}}
 64、可能出现以下窗口,在Target Connection中点击Refresh Connection。 64、可能出现以下窗口,在Target Connection中点击Refresh Connection。
-{{ :icore4:icore4_fpga_18_70.png?direct |图18-70}}+{{ :icore4:icore4_fpga_18_67.png?direct |图18-67}}
 65、点击Run运行成功后iCore4板子上有led闪烁现象。 65、点击Run运行成功后iCore4板子上有led闪烁现象。
-{{ :icore4:icore4_fpga_18_71.png?direct |图18-71}}+{{ :icore4:icore4_fpga_18_68.png?direct |图18-68}}
 ==== 四、 实验现象 ==== ==== 四、 实验现象 ====
   * iCore4板子上蓝色led闪烁   * iCore4板子上蓝色led闪烁
  
  
niosii_基于内部ram建立第一个软核.1593748119.txt.gz · 最后更改: 2020/07/03 11:48 由 zgf