实验3ucosII实时操作系统Word文档下载推荐.docx
《实验3ucosII实时操作系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验3ucosII实时操作系统Word文档下载推荐.docx(44页珍藏版)》请在冰豆网上搜索。
这里需要注意:
由于“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来用。
/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”工具页面全过程列出来供参考。
/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)
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)
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)
Peripherals->
MicrocontrollerPeripherals->
IntervalTimer->
Add,弹出“IntervalTimer”设置页,按照图3-18所示设置,鼠标左键单击“Finish”按钮。
把“timer_0”改成“timer”。
同样方法再添加一个“time_1”,把名字改为“timestamp”。
6.添加系统ID(SystemID)
在“SOPCBuilder”工程页面,鼠标左键单击SystemContents->
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超频,使实验数据更漂亮。
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的优势。
ComponentLibrary->
SDRAM->
SDRAMController->
进入“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->
Display->
CharacterLCD->
Add,弹出“CharacterLCD”设置页
面,如图3-27所示。
使用缺省设置,鼠标左键单击“Finish”按钮,名称改为“lcd”。
10.增加用于FLASH的Avalon三态桥
BridgeandAdapters->
MemoryMapped->
Avalon-MMTristateBridge->
Add,弹出“Avalon-MMTristateBridge”设置页面。
在“Avalon-MMTristateBridge”设置页面,所有参数为缺省设置。
鼠标左键单击“Finish”按钮,将名称改为“tristate_bridge_flash”。
提示框里也会有红色提示,先不要管。
11.增加FLASH
DE2-70多媒体开发板上有一片容量为2M×
16比特(8M字节)的FLASH芯片,型号为S29GL064。
FLASH->
FlashMemoryInterface(CFI)->
进入“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‐>
Peripherals‐>
MicrocontrollerPeripherals‐>
弹出“PIO(ParallelI/O)”多项设置页面。
“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”按钮退出,如果弹出与上面一样的问句,鼠标左键单击“Save”按钮。
“Generate”生成的“.ptf”等文件都自动保存在路径“E:
(五)建立顶层文件
下面要在QuartusII里例化“nios0”硬