《基于FPGA的GPS数据采集存储电路设计毕业设计(20到28).doc》由会员分享,可在线阅读,更多相关《基于FPGA的GPS数据采集存储电路设计毕业设计(20到28).doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于FPGA的GPS数据采集存储电路设计毕业设计(20到28)4 系统软件设计4。1 设计软件Quartus II介绍 Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。 Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,
2、并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTap II逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第三方EDA软件使用的VHDL网表文件和Verilog网表
3、文件.4.2 Quartus II部分功能使用(1)建立新的工程如下图操作。 图23(2)点击下一步,进行对工程的保存路径以及工程名的命名如下图操作。 图24(3)继续点击下一步,再次点击下一步进入硬件环境设置界面,按照如图设置。 图25(4)继续点击下一步,最后点击完成,工程文件建好了如下图。 图26(5)点击Filenew,弹出新建菜单选择Verilog HDL File,点击OK,如下图. 图27(6)建立好文件以后即可进行程序的编写了4.3各部分程序4。3。1 detect_module.v Detect_module框图如下. 图28 Detect_module框图 这个功能模块是为
4、了检查电平由高变低。当检测到电平又高变低,就会输出高脉冲.程序如下:module detect_module (CLK,RSTn,RX_Pin_In,H2L_Sig);input CLK;input RSTn;input RX_Pin_In;output H2L_Sig;/*/reg H2L_F1;reg H2L_F2;always (posedge CLK or negedge RSTn)if(!RSTn)begin H2L_F1 = 1b1;H2L_F2 = 1b1;end else begin H2L_F1 = RX_Pin_In;H2L_F2 = H2L_F1;end /*/assig
5、n H2L_Sig = H2L_F2 & !H2L_F1;/*/endmodule 4.3.2 rx_bps_module。vRx_bps_module框图如下。 图29 Rx_bps_module框图 该模块对信息进行采集计数,设定串口传输的波特率,为后一步处理做基础,程序如下:module rx_bps_module(CLK, RSTn,Count_Sig,BPS_CLK);input CLK;input RSTn;input Count_Sig;output BPS_CLK;/*/reg 11:0Count_BPS;always ( posedge CLK or negedge RSTn
6、 )if( !RSTn )Count_BPS = 12d0;else if( Count_BPS = 12d2082 )Count_BPS = 12d0;else if( Count_Sig )Count_BPS = Count_BPS + 1b1;elseCount_BPS = 12d0;/*/assign BPS_CLK = ( Count_BPS = 12d1041 ) ? 1b1 : 1b0;/*/Endmodule4。3.3 rx_control_module。vRx_control_module框图如下。 图30 Rx_control_module框图 该模块是在上个模块的基础上对
7、采集到的信息进行判断每一个电平的高低,进而判断传输的数据是0还是1,程序如下:module rx_control_module(CLK, RSTn,H2L_Sig, RX_Pin_In, BPS_CLK, RX_En_Sig,Count_Sig, RX_Data, RX_Done_Sig);input CLK;input RSTn;input H2L_Sig;input RX_En_Sig;input RX_Pin_In;input BPS_CLK;output Count_Sig;output 7:0RX_Data;output RX_Done_Sig;/*/reg3:0 i;reg7:0
8、rData;reg isCount;reg isDone;always ( posedge CLK or negedge RSTn )if(!RSTn)begin i = 4d0;rData = 8d0;isCount = 1b0;isDone = 1b0;endelse if(RX_En_Sig)case (i)4d0:if( H2L_Sig ) begin i = i + 1b1; isCount = 1b1; end4d1:if( BPS_CLK ) begin i = i + 1b1; end4d2, 4d3, 4d4, 4d5, 4d6, 4d7, 4d8, 4d9 :if( BPS_CLK ) begin i = i + 1b1; rData i 2 = RX_Pin_In; end4d10 :if( BPS_CLK ) begin i = i + 1b1; end4d11 :if( BPS_CLK ) begin i = i + 1b1; end4d12 :begin i = i + 1b1; isDone = 1b1; isCount = 1b0; end4d13 :begin i = 1b0; isDone = 1b0; endendcase/*/assign Count_Sig = isCount;第 20 页 共 47 页