




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/基于FPGA的串口扩展模块要求利用FPGA将PC机的串口扩展为5个子串口,5个子串口均为双向串口;通过地址线选择子串口地址,实现PC机与子串口之间的双向通信;可以方便的配置各个串口的通信参数,波特率可以设置为1200、2400、9600、57600、115200中的任意一个;数据位可以设置为5、6、7、8;校验位可以设置成N、O、E;/顶层模块MODULEUARTCLK,RST_N,RECEIVE,ADDR,CBPS,CSTOP,CJY,CDATA,SEND,RECEIVE1,LED,RECEIVE2,RECEIVE3,RECEIVE4,RECEIVE5,SEND1,SEND2,SEND3,SEND4,SEND5,V3_3INPUTCLK/系统时钟50MHZINPUTRST_N/复位信号,高有效INPUTRECEIVE/串口接收口INPUT20ADDR/串口地址INPUT20CBPS/波特率选择信号INPUTCSTOP/停止位选择信号INPUT10CJY/校验位选择信号INPUT10CDATA/数据位选择信号INPUTSEND1,SEND2,SEND3,SEND4,SEND5OUTPUTRECEIVE1,RECEIVE2,RECEIVE3,RECEIVE4,RECEIVE5OUTPUTSEND/串口发送端OUTPUT70LEDOUTPUT10V3_3WIRE70DATA1,DATA2/连接接收模块与发送模块,以便数据传输WIREBAUD_START1,BAUD_START2,BAUD_START3,BAUD_START4/BAUD_START1接收模块的波特率启动标志位;/BAUD_START2发送模块的波特率启动标志位;/BAUD_START3发送模块的波特率启动标志位;/BAUD_START4发送模块的波特率启动标志位;WIREMID_FLAG1,MID_FLAG2,MID_FLAG3,MID_FLAG4/MID_FLAG1接收数据标志位,由接收波特率发生模块发来;/MID_FLAG2发送数据标志位,由发送波特率发生模块发来;/MID_FLAG3接收数据标志位,由接收波特率发生模块发来;/MID_FLAG4发送数据标志位,由发送波特率发生模块发来;WIREINTERRUPT1,INTERRUPT2/接收完数据的标志位,同时也是发送数据的启示标志位;WIREMRECEIVE,MSEND/中间接收与发送/本程序采用模块化设计,即模块例化,分为4个模块,其中两个波特率发生模块共用注意例化的格式很重要/ASSIGNLEDDATA1|DATA2SPEED_SELECTBAUD_RECEIVE1CLKCLK,RST_NRST_N,BAUD_STARTBAUD_START1,CBPSCBPS,MID_FLAGMID_FLAG1/模块1接收数据的波特率发生模块/MY_UART_RXRECSIVE1CLKCLK,RST_NRST_N,RECEIVERECEIVE,CSTOPCSTOP,CJYCJY,CDATACDATA,BAUD_STARTBAUD_START1,MID_FLAGMID_FLAG1,RX_INTINTERRUPT1,RX_DATADATA1/模块2数据接收模块/SPEED_SELECTBAUD_SEND1CLKCLK,RST_NRST_N,BAUD_STARTBAUD_START2,CBPSCBPS,MID_FLAGMID_FLAG2/模块3发送数据的波特率发生模块/MY_UART_TXMIDSENDCLKCLK,RST_NRST_N,SENDMSEND,CSTOPCSTOP,CJYCJY,CDATACDATA,BAUD_STARTBAUD_START2,MID_FLAGMID_FLAG2,TX_INTINTERRUPT1,TX_DATADATA1/模块4数据发送模块/SPEED_SELECTBAUD_RECEIVE2CLKCLK,RST_NRST_N,BAUD_STARTBAUD_START3,CBPSCBPS,MID_FLAGMID_FLAG3/模块5接收数据的波特率发生模块/MY_UART_RXRECSIVE2CLKCLK,RST_NRST_N,RECEIVEMRECEIVE,CSTOPCSTOP,CJYCJY,CDATACDATA,BAUD_STARTBAUD_START3,MID_FLAGMID_FLAG3,RX_INTINTERRUPT2,RX_DATADATA2/模块6数据接收模块/SPEED_SELECTBAUD_SEND2CLKCLK,RST_NRST_N,BAUD_STARTBAUD_START4,CBPSCBPS,MID_FLAGMID_FLAG4/模块7发送数据的波特率发生模块/MY_UART_TXFSENDCLKCLK,RST_NRST_N,SENDSEND,CSTOPCSTOP,CJYCJY,CDATACDATA,BAUD_STARTBAUD_START4,MID_FLAGMID_FLAG4,TX_INTINTERRUPT2,TX_DATADATA2/模块8数据发送模块CHOOSECHOOSE1ADDRADDR,MSENDMSEND,SEND1SEND1,SEND2SEND2,SEND3SEND3,SEND4SEND4,SEND5SEND5,MRECEIVEMRECEIVE,RECEIVE1RECEIVE1,RECEIVE2RECEIVE2,RECEIVE3RECEIVE3,RECEIVE4RECEIVE4,RECEIVE5RECEIVE5,V3_3V3_3ENDMODULE/OVER/接收模块MODULEMY_UART_RXCLK,RST_N,RECEIVE,MID_FLAG,CSTOP,CJY,CDATA,BAUD_START,RX_DATA,RX_INTINPUTCLKINPUTRST_NINPUTRECEIVEINPUTCSTOP/停止位位数选择。INPUT10CJYINPUT10CDATAINPUTMID_FLAGOUTPUTBAUD_STARTOUTPUTREG70RX_DATAOUTPUTRX_INT/利用按键消抖原理,先后采样接收端的的电平进行对比,以判断是否有下降沿REGRECEIVE0,RECEIVE1,RECEIVE2,RECEIVE3ALWAYSPOSEDGECLKORPOSEDGERST_NBEGINIFRST_NBEGINRECEIVE01B0RECEIVE11B0RECEIVE21B0RECEIVE31B0ENDELSEBEGINRECEIVE0RECEIVERECEIVE1RECEIVE0RECEIVE2RECEIVE1RECEIVE3RECEIVE2ENDENDWIRENEG_RECEIVERECEIVE3/如果有下降沿来临,即NEG_RECEIVE为1时,波特率发生标志位置1,接收数据标志置1;/一旦数据接收结束,即NUM为12时,关断波特率发生器,接收数据标志清零;REGBAUD_START_R,RX_INT_RREG30NUMALWAYSPOSEDGECLKORPOSEDGERST_NBEGINIFRST_NBEGINBAUD_START_R1B0RX_INT_R1B0ENDELSEIFNEG_RECEIVEBEGINBAUD_START_R1B1RX_INT_R1B1ENDELSEIFNUM4D11BEGINBAUD_START_R1B0RX_INT_R1B0ENDENDASSIGNBAUD_STARTBAUD_START_RASSIGNRX_INTRX_INT_R/NUM接收位数标志;/BUFFER接收数据缓冲器;/DATA数据寄存器/波特率发生模块发来采样标志信号(MID_FLAG为1)后就进行采样REG70BUFFERALWAYSPOSEDGECLKORPOSEDGERST_NBEGINIFRST_NBEGINRX_DATA8D0BUFFER8D0NUM4D0ENDELSEIFRX_INT_RBEGINIFMID_FLAGBEGINNUMNUM1B1/注意此句与下面CASE语句是并行的,即CASE中的NUM是自加1之前的值CASENUM/NUM0时为起始位,不存储4D1BUFFER0RECEIVE4D2BUFFER1RECEIVE4D3BUFFER2RECEIVE4D4BUFFER3RECEIVE4D5BUFFER4RECEIVE4D6BUFFER5RECEIVE4D7BUFFER6RECEIVE4D8BUFFER7RECEIVE/NUM9时为结束位,不存储DEFAULTENDCASEENDELSEIFNUM6ELSENUM4D10ENDELSEIFNUM4D11BEGINNUM4D0RX_DATABUFFERENDENDEND/ENDMODULE/OVER/发送模块MODULEMY_UART_TXCLK,RST_N,SEND,MID_FLAG,CSTOP,CJY,CDATA,TX_DATA,TX_INT,BAUD_STARTINPUTCLKINPUTRST_NINPUTMID_FLAGINPUTCSTOP/停止位位数选择。INPUT10CJYINPUT10CDATAINPUT70TX_DATAINPUTTX_INTOUTPUTBAUD_STARTOUTPUTSEND/利用按键消抖原理,先后采样接收数据标志位TX_INT的电平,以判断是否有下降沿产生REGINT0,INT1,INT2ALWAYSPOSEDGECLKORPOSEDGERST_NBEGINIFRST_NBEGININT01B0INT11B0INT21B0ENDELSEBEGININT0TX_INTINT1INT0INT2INT1ENDENDWIREINT_LOCKINT1/如果TX_INT有下降沿产生,即INT_LOCK为1,就启动波特率发生器,同时使能发送数据,/并将接收模块发来的数据送入发送数据缓冲器/如果发送数据结束,即NUM11时,波特率关断,发送使能清零,发送数据缓冲器清零;REGBAUD_START_T,SEND_ENREG70DATAREG30NUMALWAYSPOSEDGECLKORPOSEDGERST_NBEGINIFRST_NBEGINBAUD_START_T1B0SEND_EN1B0DATA8D0ENDELSEIFINT_LOCKBEGINBAUD_START_T1B1SEND_EN1B1DATATX_DATAENDELSEIFNUM4D11BEGINBAUD_START_T1B0SEND_EN1B0DATA8D0ENDENDASSIGNBAUD_STARTBAUD_START_T/SEND_R数据输出寄存器;/NUM发送数据位数;REGSEND_RALWAYSPOSEDGECLKORPOSEDGERST_NBEGINIFRST_NBEGINNUM1B0SEND_R1B0ENDELSEIFSEND_ENBEGINIFMID_FLAGBEGINNUMNUM1B1CASENUM4D0SEND_R1B0/起始信号0;4D1SEND_RDATA04D2SEND_RDATA14D3SEND_RDATA24D4SEND_RDATA34D5SEND_RDATA44D6SEND_RDATA54D7SEND_RDATA64D8SEND_RDATA74D9BEGINIFCJY1/奇校验BEGINCASECDATA2D0SEND_RDATA0DATA1DATA2DATA3DATA42D1SEND_RDATA0DATA1DATA2DATA3DATA4DATA52D2SEND_RDATA0DATA1DATA2DATA3DATA4DATA5DATA62D3SEND_RDATA0DATA1DATA2DATA3DATA4DATA5DATA6DATA7ENDCASEENDELSEIFCJY2|CJY3/偶校验BEGINCASECDATA2D0SEND_RDATA0DATA1DATA2DATA3DATA42D1SEND_RDATA0DATA1DATA2DATA3DATA4DATA52D2SEND_RDATA0DATA1DATA2DATA3DATA4DATA5DATA62D3SEND_RDATA0DATA1DATA2DATA3DATA4DATA5DATA6DATA7ENDCASEENDEND4D10SEND_R1B1/结束信号1;4D11SEND_R1B1/结束信号1;DEFAULTSEND_R1B1ENDCASEENDELSEIFNUM6ELSENUM4D10ENDELSEIFNUM4D11NUM4D0ENDELSESEND_R1B1ENDASSIGNSENDSEND_R/ENDMODULE/OVER/波特率模块MODULESPEED_SELECTCLK,RST_N,BAUD_START,CBPS,MID_FLAGINPUTCLKINPUTRST_NINPUTBAUD_STARTINPUT20CBPS/波特率选择信号OUTPUTMID_FLAGPARAMETERBPS120016D41666,/波特率为1200BPSBPS240016D20832,/波特率为2400BPSBPS960016D5207,/波特率为9600BPSBPS5760016D867,/波特率为57600BPSBPS11520016D433/波特率为115200BPSPARAMETERBPS1200_216D20833,BPS2400_216D10416,BPS9600_216D2603,BPS57600_216D433,BPS115200_216D216REG150CNT/分频计数REG150MAX_CNTREG150M_CNTREGMID_FLAG_R/波特率时钟寄存器ASSIGNMID_FLAGMID_FLAG_RALWAYSPOSEDGECLKORPOSEDGERST_NBEGINIFRST_NBEGINMAX_CNT1B0M_CNT1B0ENDELSEBEGINCASECBPS3D0BEGINMAX_CNTBPS1200M_CNTBPS1200_2END3D1BEGINMAX_CNTBPS2400M_CNTBPS2400_2END3D2BEGINMAX_CNTBPS9600M_CNTBPS9600_2END3D3BEGINMAX_CNTBPS57600M_CNTBPS57600_2END3D4BEGINMAX_CNTBPS115200M_CNTBPS115200_2ENDDEFAULTENDCASEENDEND/ENDALWAYSALWAYSPOSEDGECLKORPOSEDGERST_NBEGINIFRST_NCNT1B0ELSEIFCNTMAX_CNT|BAUD_STARTCNT1B0/波特率计数清零ELSECN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美容考试题及答案
- 中级财务会计I知到智慧树答案
- 中西语言与文化知到智慧树答案
- 道路运输企业主要负责人和安全生产管理人员安全考核考试题(含答案)
- 大数据HCIA模拟练习题(附答案)
- 2025年高标准仓储场地租赁合同参考范本
- 2025版互联网金融服务合作增补协议
- 2025年沉井基础施工劳务分包合同模板
- 2025版电商平台在线支付技术支持合同书
- 2025场教育机构课程推广合作协议书
- 2024年中考物理压轴题专项训练:电磁继电器核心综合练(原卷版)
- 矿山事故应急报告制度
- 2024-2025学年山东省淄博市桓台县四年级上学期数学期中考试试题
- 《公路建设项目文件管理规程》
- 《实践论》(原文)毛泽东
- 佳能-600EX-相机说明书
- ISO27001信息安全管理体系培训资料
- DB34T 3678-2020 内河航道疏浚工程施工技术规程
- 《绝对值》教学课件
- 制造业智能化生产线改造方案提升生产效率
- 人教版五年级上册美术全册教学设计
评论
0/150
提交评论