实验3ucosII实时操作系统.docx
- 文档编号:23770848
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:52
- 大小:3.58MB
实验3ucosII实时操作系统.docx
《实验3ucosII实时操作系统.docx》由会员分享,可在线阅读,更多相关《实验3ucosII实时操作系统.docx(52页珍藏版)》请在冰豆网上搜索。
实验3ucosII实时操作系统
实验3:
ucosII实时操作系统
————————————————————————————————作者:
————————————————————————————————日期:
实验3uC/osII实时操作系统
一、实验目的:
1。
掌握PC上安装的硬件设计环境QuartusII和应用程序设计环境NiosII;
2.了解NiosII让uC/osII跑在DE2—70上实现多任务并发性;
3。
了解基于FPGA的嵌入式系统开发过程。
二、实验步骤:
(一)硬件工程的初建:
新建“demo_ucos"工程
鼠标左键双击桌面上的“QuartusII”快捷方式图标,耐心等待片刻,即可启动“QuartusII”设计页面,如图3-1所示。
在“QuartusII”设计页面内,鼠标左键单击File->NewProjectWizard,弹出“NewProjectWizard:
introduction”,如图3-2所示.
鼠标左键单击“next”按钮跳过此页,进入“NewProjectWizard:
Directory,Name,Top-levelentity”页面。
在“NewProjectWizard:
Directory,Name,Top—levelentity”页面:
“theworkingdirectoryforthisproject”(工程路径)可以任意填写,例如:
“E:
\demo\demo_ucosii"。
“工程的工作目录”如前“E:
\demo\demo_ucosii",表示将会在E盘上产生一个文件夹“demo”,在“demo”文件夹里产生另一个文件夹“demo_ucosii”(工程文件夹,保存工程文件),此实验后续步骤中产生的各种文件会自动保存到路径“E:
\demo\demo_ucosii"下。
“thenameofthisproject”(工程名字)填写为“demo_ucos”。
这里需要注意:
由于“SOPCBuiler”工具不能识别空格、中划线等符号,故实验所有步骤中如果需要命名,命名中不允许有空格、中划线出现,但“SOPCBuiler”工具能识别下划线。
“thenameofthetop—leveldesignentityforthisproject”(工程顶层实体名称)会自动与工程名字相同,也为“demo_ucos",如图3—3所示.这里需要注意:
编写顶层文件时注意这个名字.
图3-3
鼠标左键单击“next”按钮,会弹出如图3—4所示的问句.
图3—4
鼠标左键单击“是”按钮,进入“AddFiles[page2of5]”页,如图3—5所示。
由于实验到这里还没有建立任何文档,再加上后面步骤中也可以添加,鼠标左键单击“Next”按钮跳过此页,进入“Family&DeviceSettings[page3of5]”页面。
在“Family&DeviceSettings[page3of5]"页面:
“Devicefamily”栏里的“family"选择“CycloneII”;
“Availabledevices”栏里选择“EP2C70F896C6"器件,其它为缺省设置,如图3-6所示。
鼠标左键单击“next"按钮的话,还会出现第4页EDA工具的设置和第5页的“Summary”,如果用到可以在此设置。
由于目前没有用到,所以在这里就可以用鼠标左键单击“Finish”按钮,完成工程的初建。
新建的“QuartusII—E:
/demo/demo_ucosii/demo_ucos—demo_ucos”工程页面如图3—7所示。
图3-7
在“QuartusII—E:
/demo/demo_ucosii/demo_ucos-demo_ucos”工程页面,“entity”栏下,可以看到“CycloneII:
EP2C70F896C6"和工程名字“demo_ucos”.
这里需要注意:
工程初建过程牵涉到几个方面,过程中的步骤没有先后之分。
例如,完成“QuartusII”工程的初建后,如果发现“entity"栏里不是“CycloneII:
EP2C70F896C6”,比如是“StratixII:
AUTO”,如图3-8所示.
图3—8
鼠标左键双击或者箭头指着“StratixII:
AUTO”然后鼠标单击右键,在下拉菜单里点击“settings”,两种方法都能使“Settings-demo_ucos”的设置页(如图3-6所示)弹出,在“Device"中可以重新设置。
初建的“QuartusII—E:
/demo/demo_ucosii/demo_ucos—demo_ucos”工程页面,会自动保存在路径“E:
\demo\demo_ucosii”下,如果在“QuartusII”工程页面关闭时想要完成工程后续设计,可以打开此路径下的工程文件夹“demo_ucosii”,如图3—9所示。
鼠标左键双击带有蓝色“Quartus”图标的“demo_ucos”文件,就可以打开“QuartusII—E:
/demo/demo_ucosii/demo_ucos—demo_ucos”工程页面。
(二)利用“SOPCBuilder”工具配置硬件
事实上,为了方便可以把实验2的硬件配置拷贝到实验3来用。
在“QuartusII—E:
/demo/demo_ucosii/demo_ucos-demo_ucos"工程页面,鼠标左键单击“open"按钮,弹出“打开”对话框。
在对话框“查找范围"选择实验2所在的路径“E:
/demo/demo_MEMtest",把此路径下的“nios0.sopc"文件拷贝到实验3所在的路径“E:
/demo/demo_ucosii”下.
鼠标左键双击“nios0。
sopc"文件,打开后可以重新配置硬件。
有些在实验3需要用到的硬件可以保留,有些用不到的硬件可以一个个删除:
鼠标左键单击硬件名称使其蓝色高亮,然后单击硬件默认显示栏下的“Remove”按钮,即可删去此硬件。
为了加深印象,这里还是把重新建立实验3工程的“SOPCBuilder”工具页面全过程列出来供参考。
在“QuartusII-E:
/demo/demo_ucosii/demo_ucos-demo_ucos”工程页面,鼠标左键单击Tools—〉SOPCBuilder,弹出“CreateNewSystem”对话框.
在“CreateNewSystem”对话框里:
“SystemName”项后输入“nios0”(也可以取其他名称);
“TargetHDL"项一般选择“Verilog”。
如图3—10所示.
鼠标左键单击“OK”按钮,弹出配置这个工程硬件的“SOPCBuilder”工具页面,如图3—11所示。
在“SOPCBuilder"工具页面可以添加实现此工程所需硬件,形成良好的硬件系统.添加的硬件会在默认空白区出现,并且可以修改、删除,在默认空白区还显示硬件的主从连接.
“TargetHDL”项一般选择“Verilog",表示“SOPCBuilder”会将你稍后所配置的IP,以Verilog表示,若你熟悉VHDL,也可以选择VHDL。
这里的设定不是限制了日后只能用Verilog或VHDL写代码,因为QuartusII本来就允许Verilog与VHDL混合編程,也就是说Verilog的module可以使用VHDL的entity,VHDL的entity可以使用Verilog的module,最后都能顺利编译.
图3-11
这里需要注意:
如果配置硬件的过程中暂停设计,关闭“SOPCBuilder"工具页面会弹出一个问句,如图3-12所示。
鼠标左键单击“Save”按钮,建立的硬件系统信息就保存到路径“E:
/demo/demo_ucosii”下的文件“nios0。
sopc”中。
如果需要再次打开此工程的“SOPCBuilder"工具页面想要完成后续的硬件配置,可以先打开“QuartusII—E:
/demo/demo_ucosii/demo_ucos-demo_ucos”工程页面(方法如图3-9所示),在工程页面内,鼠标左键单击“open”按钮弹出“打开”页面。
在“查找范围"找到路径“E:
\demo\demo_ucosii”下的“nios0。
sopc”文件,鼠标左键双击“nios0。
sopc”文件即可打开此工程的“SOPCBuilder"工具页面.
(三)配置硬件
1.定义时钟
确认“SOPCBuilder”工具页面的“Target/DeviceFamily”是“CycloneII"。
在如图3-13所示的“ClockSettings”栏里可以看到50.0MHz,代表NiosIICPU在DE2-70可以运行在50.0MHz,但这时CPU降频在跑,正常情況下,NiosIICPU在DE2-70可以运行100.0MHz,所以可以用PLL将clk倍频成100.0Mhz.
2.增加用来保存Nios程序的片上存储器(OnChipMemory(RAMorROM))
“OnChipMemory”在FPGA芯片内,是DE2-70上所有存储器中存储量最小,但是速度最快的存储器。
在“SOPCBuilder”工具页面,鼠标左键单击SystemContents—>ComponentLibrary—〉MemoriesandMemoryControllers->OnChip-〉OnChipMemory(RAMorROM)—〉Add。
弹出“onchipmemory"设置页面,如图3-14所示。
在“onchipmemory”设置页面:
“TotalMemorySize”设置为80960;
其他为缺省设置,鼠标左键单击“Finish”按钮。
不用管状态框里的错误,添加Nios处理器后会自动消失。
“Totalmemorysize”与能使用的M4K存储器数量、FPGA、NiosIICPU和Megafunction(如fcfifo)都会影响“On—chipMemory”的size,本教程使用80k.
“OnChipMemory”会在“SOPCBuilder"工具页面默认空白区有显示如图3—15所示。
如果想修改“OnChipMemory"的设置,可以左键双击硬件名称,会重新弹出如图3-14所示的设置页面.对于其他硬件来说,方法类似.
把“onchip_memory2_0”改成“onchip_mem”。
3.添加NiosII/s处理器(NiosIIProcessor)
在“SOPCBuilder"工具页面,鼠标左键单击SystemContents-〉ComponentLibrary->NiosIIProcessor—>Add,弹出“NiosIIProcessor"设置页面。
在“NiosIIProcessor”设置页面:
设置NiosII/f处理器,“ResetVector”指向“cfi_flash",“ExceptionVector"指向“onchip_mem”,如图3-16所示。
这里需要注意:
如果在添加CPU之后才添加“cfi_flash”,一定要记住回头修改CPU的“ResetVector”,使其指向“cfi_flash”。
鼠标左键单击“Finish"按钮,把“cpu_0”改成“cpu”。
图3—16
4.添加调试接口(JTAG—UART)
在“SOPCBuilder”工具页面,鼠标左键单击SystemContents—>ComponentLibrary—〉InterfaceProtocols—〉Serial—>JTAGUART—>Add,弹出“JTAGUART”设置页,如图3—17所示.使用缺省设置,鼠标左键单击“Finish”按钮。
把“jtag_uart_0"改成“jtag_uart”。
JTAGUART是PC与SOPC进行序列传输的一种方式,也是NiosIICPU标准的输出/输入设备。
如printf()通过JTAGUART,经过USBBlaster将输出结果显示在PC的NiosIIEDS上的console,scanf()通过USBBlaster经过JTAGUART将输入传给SOPC。
5.添加两个内部定时器(IntervalTimer)
在“SOPCBuilder"工具页面,鼠标左键单击SystemContents->ComponentLibrary->Peripherals—〉MicrocontrollerPeripherals-〉IntervalTimer—〉Add,弹出“IntervalTimer"设置页,按照图3-18所示设置,鼠标左键单击“Finish”按钮。
把“timer_0”改成“timer”。
同样方法再添加一个“time_1",把名字改为“timestamp".
6.添加系统ID(SystemID)
在“SOPCBuilder”工程页面,鼠标左键单击SystemContents-〉ComponentLibrary—>Peripherals—〉DebugandPerformance—>SystemIDPeripheral—〉Add,弹出“SystemIDperipheral”设置页面,如图3-19所示。
使用缺省设置,鼠标左键单击“Finish”按钮,把“sysid_0"的名称改为“sysid".
“SOPCBuilder”会使用SystemID为每个系统提供识别符号,NiosIIEDS可以识别符号防止使用者往FPGA上烧录了与“。
ptf”不符合的“.sof”.
7.增加PLL
本实验需要两个时钟:
(1)100MHz的C0,用于“nios0”硬件系统总线的clk_c0_cpu;
(2)100MHz的C1,用于SDRAM的clk_c1_sdram。
这里需要注意:
c1的“Clockphaseshift"设置为-65deg,对SDRAM超频,使实验数据更漂亮。
在“SOPCBuilder”工具页面,鼠标左键单击SystemContents->ComponentLibrary—>PLL—〉PLL—>Add。
在弹出的对话框里,鼠标左键单击“LaunchAltera’sALTPLLMegaWizard”,使按钮周框内侧出现虚方框,如图3-20所示。
图3-20
鼠标左键单击“next”按钮,进入ALTPLL多项设置页面.默认进入的页面是:
1parametersettings栏的“General/Modes"设置页,显示为:
1parametersettings为深兰色背景,“General/Modes”为General/Modes,如图3—21左上角所示,此页缺省设置。
鼠标左键单击2outputclocks栏,默认转换到“c03-Core/Externaloutputclocks”的设置页面,在“c03—Core/Externaloutputclocks”的设置页面:
2outputclocks为深兰色背景,“clkc0”为clkc0,“clkc0”各参数按照图3-22所示页面设置。
图3-22
图3—23
鼠标左键单击2outputclocks栏下的“clkc1”,进入“c13-Core/Externaloutputclocks”的设置页,页面显示:
2outputclocks为深兰色背景,“clkc1”为clkc1,“clkc1"的设置按照图3—23所示。
鼠标左键单击“Finish"按钮,并且单击经过的所有页面的“Finish”按钮。
设置了PLL后,在本工程硬件系统的“SOPCBuilder”工具页面,“ClockSettings”栏下:
“clk_0”改名为“clk_50”;
“pll_0_c0”改名为“clk_c0_cpu”;
“pll_0_c1",改名为“clk_c1_sdram”,如图3—24所示。
图3—24
8.增加SDRAM控制器
DE2-70多媒体开发板上有两片容量为32Mbytes的SDRAM(IS42S16160B),按照4M*16*4分布,“Datawidth”只有16bit.而NiosIICPU与其他ip都是32bit,由于Datawidth不同,传输数据时,Avalonbus会启动DynamicBusSizing机制,2个clk才能完成32bit传输.
以传输来说,既然NiosIICPU是32bit,所有的ip都是32bit,SDRAM的16bit反而是传输上的瓶颈。
此处,将2片16bitSDRAM合并成1个32bitSDRAM使用,可以让整个系统顺畅地以32bit运行,不再需要Avalonbus的DynamicBusSizing机制,充分发挥DE2—70两片SDRAM的优势。
在“SOPCBuilder”工具页面,鼠标左键单击SystemContents->ComponentLibrary->MemoriesandMemoryControllers—>SDRAM—〉SDRAMController—〉Add.
进入“SDRAMController”的多项设置页面,默认进入“ParameterSettings"的MemoryProfile设置页面,此页面的设置严格按照如图3—25所示.“Datawidth”设置为32bits,注意图3—25所示页面下部的变化,“Memorysize”显示“64Mbytes”。
这里需要注意:
编写顶层文件时,必须让两个SDRAM同步工作,数据也必须是高16位由一个SDRAM进出,低16位由另一个SDRAM进出。
图3-25所示页面完成后,鼠标左键单击“Timing",进入Timing设置页面。
严格按照如图3-26所示设置各参数,设置完成后,鼠标左键单击“Finish”按钮.
将名称改为“sdram".
9.增加字符LCD(CharacterLCD)
在“SOPCBuilder”工具页面的“SystemContents”栏中,鼠标左键单击ComponentLibrary->Peripherals—〉Display—>CharacterLCD—>Add,弹出“CharacterLCD”设置页面,如图3—27所示.使用缺省设置,鼠标左键单击“Finish”按钮,名称改为“lcd”。
10.增加用于FLASH的Avalon三态桥
在“SOPCBuilder”工具页面,鼠标左键单击SystemContents—〉ComponentLibrary—〉BridgeandAdapters->MemoryMapped->Avalon—MMTristateBridge->Add,弹出“Avalon-MMTristateBridge”设置页面.
在“Avalon—MMTristateBridge”设置页面,所有参数为缺省设置.
鼠标左键单击“Finish"按钮,将名称改为“tristate_bridge_flash"。
提示框里也会有红色提示,先不要管。
11.增加FLASH
DE2-70多媒体开发板上有一片容量为2M×16比特(8M字节)的FLASH芯片,型号为S29GL064。
在“SOPCBuilder”工具页面,鼠标左键单击SystemContents—〉ComponentLibrary—〉MemoriesandMemoryControllers—>FLASH—>FlashMemoryInterface(CFI)-〉Add。
进入“FlashMemoryInterface(CFI)”多项设置页面,默认进入“ParameterSettings”的Attributes设置页面,严格按照如图3—28所示设置各参数.
然后鼠标左键单击“Timing”标签,进入“FlashMemoryInterface(CFI)”的“ParameterSettings”的Timing设置页.严格按照如图3—29所示设置各参数。
设置完成后,鼠标左键单击“Finish”按钮,将名字改为“cfi_flash”.
此时,硬件添加栏里会出现如图3-30左图所示现象,需要手动将“cfi_flash"和三态桥“tristate_bridge_flash”连接上。
(将光标移近“cfi_flash",会自动出现中图所示现象,鼠标左键单击小白圈,其变黑,移开鼠标即变成如右图所示.)
手动将“cfi_flash”和三态桥“tristate_bridge_flash”连接后,提示框里的红色提示消失。
12。
添加inputPIO
在“SOPCBuilder”工程页面,鼠标左键单击SystemContents‐〉ComponentLibrary‐>Peripherals‐〉MicrocontrollerPeripherals‐>PIO(ParallelI/O)‐>Add,弹出“PIO(ParallelI/O)”多项设置页面。
默认进入“ParameterSettings”的“BasicSettings"设置页面,如图3—31所示。
在此页设置:
“Width”为18;“Direction”为input;其他为默认值,将该硬件的名称改为“pio_sw”。
13。
添加outputPIO
在“SOPCBuilder”工具页面,鼠标左键单击SystemContents‐>ComponentLibrary‐>Peripherals‐>MicrocontrollerPeripherals‐>PIO(ParallelI/O)‐>Add。
弹出“PIO(ParallelI/O)”多项设置页面。
在此页设置:
“Width"为18;“Direction”为output;其他为默认值,如图3-32所示。
将名称改为“pio_ledr”.
至此,已经完成了“nios0”硬件系统的搭建,结构如图3—33所示。
鼠标左键单击各个元器件“Clock”,会出现下拉三角,左键点开下拉三角:
“pll”没办法选择,只能是“clk_50";
“sdram"选择“clk_c1_sdram”;
其他器件选择“clk_c0_cpu”。
(四)产生“.ptf”文件
在“SOPCBuilder”工具页面,鼠标左键单击System->Auto-AssignBaseAddresses,菜单自动设置映射地址;
在“SOPCBuilder”工具页面,鼠标左键单击System—〉Auto-AssignIRQs,菜单自动设置中断号.
“SOPCBuilder”工具页面下部的红色警示会消失。
鼠标左键单击“Generate",如果弹出问句,鼠标左键单击“Save"。
“Generate”过程中,弹出的页面下面有进度提示,如图3—34所示。
当进度提示出现“info:
systemgenerationwassuccessful”时“Generate”完成,鼠标左键单击“Exit”按钮退出,如果弹出与上面一样
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 ucosII 实时 操作系统
![提示](https://static.bdocx.com/images/bang_tan.gif)