基于VHDL 的串口程序.doc

基于VHDL 的串口程序.doc

ID:52679493

大小:146.80 KB

页数:18页

时间:2020-03-29

基于VHDL 的串口程序.doc_第1页
基于VHDL 的串口程序.doc_第2页
基于VHDL 的串口程序.doc_第3页
基于VHDL 的串口程序.doc_第4页
基于VHDL 的串口程序.doc_第5页
资源描述:

《基于VHDL 的串口程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于VHDL的串口收发设计20161227在quartus里面没找到SCI的LPM部件,又不想自己从头编写,在网上找到了一个verilog的程序,也找到了和这个实现方法相同的VHDL程序。都是接收到按键按下时候,启动串口发送,发送welcom但是都是发现一个,并延时重新读取按键,然后再重新启动发送。数据格式是9600boudrate、8数据位、1启动位、1停止位,每16个bit周期发送一个byte,接收程序,没有中间多位判断部分,考虑接收的有效性和可靠性,对程序进行了修改,改为每11个bit周期发送一个byte,这样也可以兼容接收2个停止位的接收程序,在接收程序中进行了多相判断。程

2、序和截图如下:--本模块的功能是验证实现和PC机进行基本的串口通信的功能。需要在PC机上安装一个串口调试工具来验证程序的功能。--程序实现了一个收发一帧10个bit(即无奇偶校验位)的串口控制器,10个bit是1位起始位,8个数据位,1个结束位。--串口的波特律由程序中定义的div_par参数决定,更改该参数可以实现相应的波特率。程序当前设定的div_par的值--是0x145,对应的波特率是9600。用一个8倍波特率的时钟将发送或接受每一位bit的周期时间划分为8个时隙以使通--信同步.--程序的基本工作过程是,按动一个按键key1控制器向PC的串口发送“welcome",--P

3、C机接收后显示验证数据是否正确(串口调试工具设成按ASCII码接受方式).--PC可随时向FPGA发送0-F的十六进制数据,FPGA接受后显示在7段数码管上.libraryieee;--designbyjiaolonglan20161227useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitymyserialisgeneric(boud_rate:integer:=9600;clk_rate:integer:=50_000_000);port(clk:i

4、nstd_logic;rstn:instd_logic;rxd:instd_logic;--receivebittxd:outstd_logic;--sendbit--txd_buff:instd_logic_vector(7downto0);--bufferwritein--write_data:instd_logic;--writedataen:outstd_logic_vector(7downto0);seg_data:outstd_logic_vector(7downto0);--rxd_buff:outstd_logic_vector(7downto0);key_inpu

5、t:instd_logic--testout:outstd_logic--read_data:instd_logic);endentitymyserial;18architecturebhvofmyserialisSIGNALdiv_reg:integerrange0to2**16-1;--分频计数器,分频值由波特率决定。分频后得到频率8倍波特率的时钟SIGNALdiv8_tras_reg:std_logic_vector(2DOWNTO0);--该寄存器的计数值对应发送时当前位于的时隙数SIGNALdiv8_rec_reg:std_logic_vector(2DOWNTO0);-

6、-寄存器的计数值对应接收时当前位于的时隙数SIGNALstate_tras:std_logic_vector(3DOWNTO0);--发送状态寄存器SIGNALstate_rec:std_logic_vector(3DOWNTO0);--接受状态寄存器SIGNALclkbaud_tras:std_logic;--以波特率为频率的发送使能信号SIGNALclkbaud_rec:std_logic;--以波特率为频率的接受使能信号SIGNALclkbaud8x:std_logic;--以8倍波特率为频率的时钟,它的作用是将发送或接受一个bit的时钟周期分为8个时隙SIGNALrecst

7、art:std_logic;--开始发送标志SIGNALrecstart_tmp:std_logic;--开始接受标志SIGNALtrasstart:std_logic;--SIGNALrxd_reg:std_logic_vector(7downto0);--接收寄存器1SIGNALtxd_reg:std_logic;--发送寄存器SIGNALrxd_buf:std_logic_vector(7DOWNTO0);--接受数据缓存SIGNALtxd_buf:std_lo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。