实验5二值计数.docx
- 文档编号:9599893
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:49
- 大小:3.17MB
实验5二值计数.docx
《实验5二值计数.docx》由会员分享,可在线阅读,更多相关《实验5二值计数.docx(49页珍藏版)》请在冰豆网上搜索。
实验5二值计数
实验5二值计数
一、实验目的:
1.掌握PC上安装的硬件设计环境QuartusII和应用程序设计环境NiosII;
2.了解NiosII中“CountBinary”软件设计模板;
3.掌握用NiosII控制LED、1602LCD、SEG7显示;
4.掌握按钮KEY0~4开关作为中断源的设计方法。
二、实验步骤:
(一)初建工程:
在PC上新建一个名为“demo_bcou”的工程
鼠标左键双击桌面上的“QuartusⅡ”快捷方式图标,耐心等待片刻,即可启动“QuartusⅡ”设计页面,如图5-1所示。
在“QuartusⅡ”设计页面内,鼠标左键单击“File‐>NewProjectWizard”。
弹出“NewProject
Wizard:
introduction”,如图5-2所示。
初次实验可以仔细阅读此页面内容,然后鼠标左键单击“next”按钮跳过此页,进入“NewProjectWizard:
Directory,Name,Top-levelentity”页面。
“theworkingdirectoryforthisproject”(工程的工作目录)可以任意填写,例如:
“E:
\demo\demo_bcount”。
这里需要注意:
由于“SOPCBuiler”工具不能识别空格、中划线等符号,故实验步骤中如果需要命名,命名中不允许有空格、中划线出现,但“SOPCBuiler”工具能识别下划线。
工程的“工作目录”如前“E:
\demo\demo_bcount”,将会在E盘上产生一个文件夹“demo”,在“demo”文件夹里产生另一个文件夹“demo_bcount”(工程文件夹,保存工程文件),这个实验后续步骤中产生的各种文件会自动保存到路径“E:
\demo\demo_bcount”下。
“thenameofthisproject”(工程名字)填写为“demo_bcou”。
“thenameofthetop-leveldesignentityforthisproject”(工程的顶层设计实体)会自动与工程名字相同,也为“demo_bcou”。
这里需要注意:
工程顶层设计实体名称一定要与编写的顶层文件“module***”中模块名字一致,如图5-3所示。
图5-3
完成填写后,鼠标左键单击“next”按钮,弹出如图5-4所示的问句。
鼠标左键单击“是”按钮,进入“AddFiles[page2of5]”页,如图5-5所示。
由于实验到这里还没有建立任何档案。
再加上后面步骤中也可以添加,故鼠标左键单击“Next”按钮跳过此页,进入“Family&DeviceSettings[page3of5]”页。
在“Family&DeviceSettings[page3of5]”页面:
“Devicefamily”栏里的“family”选择“CycloneII”。
“Availabledevices”栏里选择“EP2C70F896C6”器件,其它为缺省设置。
如图5-6所示。
鼠标左键单击“next”按钮的话,还会出现第4页EDA工具的设置和第5页的“Summary”,如果用到可以在此设置。
由于目前没有用到,所以在这里就可以用鼠标左键单击“Finish”按钮,完成新工程的初建。
新建的“QuartusⅡ-E:
/demo/demo_bcount/demo_bcou-demo_bcou”工程页面如图5-7所示。
图5-7
在“QuartusⅡ-E:
/demo/demo_bcount/demo_bcou-demo_bcou”工程页面内“ProjectNavigator”(工程导航)下面的“entity”栏里,可以看到“CycloneⅡ:
EP2C70F896C6”,和基于“CycloneⅡ:
EP2C70F896C6”芯片的工程“demo_bcou”。
这里需要注意:
工程初建过程牵涉到几个方面,过程中的步骤没有先后之分。
例如,完成“QuartusⅡ”工程的初建后,如果发现“entity”栏里不是“CycloneⅡ:
EP2C70F896C6”,如图5-8所示。
图5-8
鼠标左键双击“StratixⅡ:
AUTO”,或者箭头指着“StratixⅡ:
AUTO”然后鼠标单击右键,在下拉菜单里点击“settings”,两种方法都能使“Settings-demo_bcou”的设置页弹出,在“Device”中,可以重新设置成如前面的图5-6所示。
初建的“QuartusⅡ-E:
/demo/demo_bcount/demo_bcou-demo_bcou”工程页面,会自动保存在路径“E:
\demo\demo_bcount”下。
如果想要再次打开“QuartusⅡ”工程页面,可以打开此路径下的工程文件夹“demo_bcount”,如图5-9所示。
鼠标左键双击带有蓝色“Quartus”图标的“demo_bcou”文件,就可以打开“QuartusⅡ-E:
/demo/demo_bcount/demo_bcou-demo_bcou”工程页面。
(二)利用“SOPCBuilder”工具产生新硬件系统
在利用“SOPCBuilder”工具产生新硬件系统之前,先在“QuartusII-E:
/demo/demo_bcount/demo_bcou-demo_bcou”工程页面,鼠标左键单击“open”按钮,弹出“打开”对话框,在“查找范围”里找到路径“D/SOPC资料/BCOUNT资料”下的“ip”拷贝到路径“E:
/demo/demo_bcount”下,ip中有“SEG7_Controller”。
配置硬件是个繁琐的事情,如果一个硬件参数配置不对,整个系统就不能用,所以简便而实用的方法是从友晶科技的大师们提供的范例里拷贝硬件配置,另外还可以从已经做通的实验里拷贝硬件配置。
在“QuartusII-E:
/demo/demo_bcount/demo_bcou-demo_bcou”工程页面,鼠标左键单击“open”按钮,弹出“打开”对话框。
在“查找范围”选择某个实验所在的路径,把“nios0.sopc”文件拷贝到此实验所在的路径“E:
/demo/demo_bcount”下。
鼠标左键双击“nios0.sopc”文件,打开后可以重新配置硬件。
有些在此实验需要的硬件可以保留,有些用不到的硬件可以一个个删除:
鼠标左键单击硬件名称使其蓝色高亮,然后单击硬件默认显示栏下的“Remove”按钮,即可删去此硬件。
在此,作为参考再次把此实验所需硬件完整配置一遍。
在初建的“QuartusⅡ-E:
/demo/demo_bcount/demo_bcou-demo_bcou”工程页面内,鼠标左键单击“Tools‐>SOPCBuilder”,弹出“CreateNewSystem”对话框,如图5-10所示。
在“CreateNewSystem”对话框里:
“SystemName”项后输入“nios0”。
这里需要注意:
编写顶层文件例化“nios0”系统时,要审视顶层文件中“SystemName”是否是“nios0”。
“TargetHDL”项一般选择“Verilog”。
鼠标左键单击“OK”按钮,即初步建成工程的“SOPCBuilder”工具页面,如图5-11所示。
在“SOPCBuilder”工具页面里可以添加实现此工程所需硬件,形成良好的硬件系统。
添加的硬件会在默认空白区出现,并且可以修改、删除,在默认空白区还显示硬件的连接。
这里注意:
在“SystemContents”栏下可以看到ip“SEG7_IF”。
选择Verilog,表示“SOPCBuilder”会将你稍后所配置的IP,以Verilog表示,若你熟悉VHDL,也可以选择VHDL。
这里的设定不是限制了日后只能用Verilog或VHDL写代码,因为QuartusII本来就允许Verilog与VHDL混合編程,也就是说Verilog的module可以使用VHDL的entity,VHDL的entity可以使用Verilog的module,最后都能顺利编译。
图5-11
这里需要注意:
如果配置硬件的过程中暂停设计,关闭“SOPCBuilder”工具页面会弹出一个问句,如图5-12所示。
鼠标左键单击“Save”按钮,建立的硬件信息就保存到路径“E:
/demo/demo_bcount”下的“nios0.sopc”文件中。
如果需要再次打开此工程的“SOPCBuilder”工具页面完成后续的硬件配置的话,可以先打开“QuartusⅡ-E:
/demo/demo_bcount/demo_bcou-demo_bcou”工程页面(方法如图5-9所示),在工程页面内,鼠标左键单击“open”按钮弹出“打开”页面。
在“查找范围”找到路径“E:
\demo\demo_bcount”下的“nios0.sopc”文件,鼠标左键双击“nios0.sopc”文件,即可打开本工程的“SOPCBuilder”工具页面。
(三)配置硬件(要特别注意元器件的命名)
1.定义时钟
确认“SOPCBuilder”工具页面的“Target/DeviceFamily”是“CycloneII”。
在如图5-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芯片内,是DE5-70上所有存储器中存储量最小,但是速度最快的存储器。
在“SOPCBuilder”工具页面,鼠标左键单击SystemContents->ComponentLibrary->MemoriesandMemoryControllers->OnChip->OnChipMemory(RAMor
ROM)->Add。
弹出“onchipmemory”设置页面,如图5-14所示。
在“onchipmemory”设置页面:
“TotalMemorySize”设置为80960;其他为缺省设置,鼠标左键单击“Finish”按钮。
不用管状态框里的错误,添加Nios处理器后会自动消失。
“Totalmemorysize”与能使用的M4K存储器数量、FPGA、NiosIICPU和Megafunction(如fcfifo)都会影响“On-chipMemory”的size,本教程使用80k。
“OnChipMemory”会在“SOPCBuilder”工具页面默认空白区有显示如图5-15所示。
如果想修改“OnChipMemory”的设置,可以左键双击硬件名称,会重新弹出如图5-14所示的设置页面。
对于其他硬件来说,方法类似。
把“onchip_memory2_0”改成“onchip_mem”。
3.添加NiosII/s处理器(NiosIIProcessor)
在“SOPCBuilder”工具页面,鼠标左键单击SystemContents->ComponentLibrary->NiosIIProcessor->Add,弹出“NiosIIProcessor”设置页面。
在“NiosIIProcessor”设置页面:
CPU设置为NiosII/f处理器。
ResetVector就是当系统reset时,CPU会跳到ResetVector所指定的位址执行,所以ResetVector所指定的存储器必須是非挥发性的,在DE2-70只有flash。
而ExceptionVector则是当发生hardwareinterrupt或softwareexception時,CPU会跳到ExceptionVector所指定的位址执行,为了更有效率,将ExceptionVector指向速度最快的存储器,通常是on-chipmemory或SSRAM,如图5-16所示。
鼠标左键单击“Finish”按钮,把“cpu_0”改成“cpu”。
4.添加调试接口(JTAG-UART)
在“SOPCBuilder”工具页面,鼠标左键单击SystemContents->ComponentLibrary->InterfaceProtocols->Serial->JTAGUART->Add,弹出“JTAGUART”设置页,如图5-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”设置页,按照图5-18所示设置,鼠标左键单击“Finish”按钮。
把“timer_0”改成“timer”。
同样方法再添加一个“time_1”,把名字改为“time_stamp”。
6.添加系统ID(SystemID)
在“SOPCBuilder”工程页面,鼠标左键单击SystemContents->ComponentLibrary->Peripherals->DebugandPerformance->SystemIDPeripheral->Add,弹出“SystemIDperipheral”设置页面,如图5-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”,使按钮周框内侧出现虚方框,如图5-20所示。
图5-20
鼠标左键单击“next”按钮,进入ALTPLL多项设置页面。
默认进入的页面是:
1parametersettings栏的“General/Modes”设置页,显示为:
1parametersettings为深兰色背景,“General/Modes”为General/Modes,如图5-21左上角所示,此页缺省设置。
鼠标左键单击2outputclocks栏,默认转换到“c0-Core/Externaloutputclocks”的设置页面,在“c0-Core/Externaloutputclocks”的设置页面:
2outputclocks为深兰色背景,“clkc0”为clkc0,“clkc0”各参数按照图5-22所示页面设置。
图5-22
鼠标左键单击2outputclocks栏下的“clkc1”,进入“c1-Core/Externaloutputclocks”的设置页,页面显示:
2outputclocks为深兰色背景,“clkc1”为clkc1,“clkc1”的设置按照图5-23所示,能使SDRAM超出更高的频率,使实验数据更漂亮。
图5-23
鼠标左键单击“Finish”按钮,并且单击经过的所有页面的“Finish”按钮。
设置了PLL后,在本工程硬件系统的“SOPCBuilder”工具页面,“ClockSettings”栏下:
“clk_0”改名为“clk_50”;
“pll_0_c0”改名为“clk_c0_cpu”;
“pll_0_c1”,改名为“clk_c1_sdram”,如图5-24所示。
图5-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设置页面,此页面的设置严格按照如图5-25所示。
“Datawidth”为32bits,注意图5-25所示页面下部的变化,“Memorysize”显示“64Mbytes”。
这里需要注意:
编写顶层文件时,必须让两个SDRAM同步工作。
图5-25所示页面完成后,鼠标左键单击“Timing”,进入Timing设置页面。
严格按照如图5-26所示设置各参数,设置完成后,鼠标左键单击“Finish”按钮。
将名称改为“sdram”。
9.增加字符LCD(CharacterLCD)
在“SOPCBuilder”工具页面的“SystemContents”栏中,鼠标左键单击ComponentLibrary->Peripherals->Display->CharacterLCD->Add,弹出“CharacterLCD”设置页面,如图5-27所示。
使用缺省设置,鼠标左键单击“Finish”按钮,名称改为“lcd_display”。
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)”多项设置页面,默认进入“Parameter
Settings”的Attributes设置页面,严格按照如图5-28所示设置各参数。
然后鼠标左键单击“Timing”标签,进入“FlashMemoryInterface(CFI)”的“ParameterSettings”的Timing设置页。
严格按照如图5-29所示设置各参数。
设置完成后,鼠标左键单击“Finish”按钮,将名字改为“cfi_flash”。
此时,硬件添加栏里会出现如图5-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”设置页面,如图5-31所示。
此页设置:
“Width”为4;“Direction”为input;其他为默认值。
鼠标左键单击“InputOptions”标签,弹出“InputOptions”设计页面,按照如图5-32所示设置。
将该硬件的名称改为“button_pio”,作为连接KEY0~3的PIO。
13.添加outputPIO
在“SOPCBuilder”工具页面,鼠标左键单击SystemContents‐>ComponentLibrary‐>Peripherals‐>MicrocontrollerPeripherals‐>PIO(ParallelI/O)‐>Add。
弹出“PIO(ParallelI/O)”多项设置页面。
在此页设置:
“Width”为8;“Direction”为output;其他为默认值,如图5-33所示。
将名称改为“led_pio”,作为连接绿LED的PIO。
14.添加数码管控制器
在“SOPCBuilder”工具页面,鼠标左键单击SystemContents‐
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 计数