RS232通信

V

vaibhav_sinha

Guest
嗨。
我已经写此代码为RS232串口接收使用8 N一1议定书。但是
, 代码是不是表现不如预期。是否有人可以通过代码和调试呢?

图书馆的IEEE ;
使用ieee.std_logic_1164.all ;
实体收到的
港口(重置:在位;
接收:中位;
outp :出bit_vector ( 7 downto 0 ) ;
时钟:中位) ;
年底收到;
建筑拱收到的
信号数:整数范围为0至8000 ;
输入国(闲置,启动,停止,一,二,三,四,五,六,七,八) ;
信号pr_state :国家;
信号nx_state :国家;
信号旗:钻头;
开始
进程(时钟,收发)
开始
如果重置= '1 '然后
国旗“ = '0 ' ;
如果结束;
如果pr_state =闲置和Rx = '0 '然后
国旗“ = '1 ' ;
如果结束;
结束进程;
进程(旗, pr_state ,重置)
开始
如果重置= '1 '然后
nx_state “ =闲置;
如果结束;
案件pr_state是
空闲时= “如果国旗= '0 '然后
nx_state “ =闲置;
其他的
nx_state “ =启动;
如果结束;
当开始= “ nx_state ” = 1 ;
当一个= “ nx_state ” = 2 ;
outp ( 7 ) “ =收发;

当两个= “ nx_state ” = 3 ;
outp ( 6 ) “ =收发;
当3 = “ nx_state ” = 4 ;
outp ( 5 ) “ =收发;
当4 = “
nx_state “ = 5 ;
outp ( 4 ) “ =收发;
当5 = “
nx_state “ = 6 ;
outp ( 3 ) “ =收发;
当6 = “
nx_state “ = 7 ;
outp ( 2 ) “ =收发;
当7 = “
nx_state “ = 8 ;
outp ( 1 ) “ =收发;
当8 = “
nx_state “ =停止;
outp ( 0 ) “ =收发;
当停止= “
nx_state “ =闲置;
为此案件;
结束进程;进程(复位,时钟)
开始
如果(重置= '1 ' ) ,然后
伯爵“ = 0 ;
pr_state “ =闲置;
其他的
如果( clk'EVENT和时钟= '1 ' ) ,然后
如果计数= 0则
pr_state “ = nx_state ;
如果pr_state =然后开始
伯爵“ = 7812 ;
elsif pr_state =停止然后
伯爵“ = 0 ;
elsif pr_state / =闲置然后
伯爵“ = 5208 ;
如果结束;
其他的
伯爵“ =伯爵- 1 ;
如果结束;
如果结束;
如果结束;
结束进程;
为此拱;在此代码,每当一个新的字节已经收到,我们必须重置第一。和国旗断言位时
, 开始检测。

使用的是50MHz的时钟和波特率是9600 。
因此
, 我已经使用的延迟
9600分之50000000 = 5208时钟周期。
开始位,是7812的延迟
, 以达到中心位。

 
Smartfony Galaxy S6 i Galaxy S6 Edge przykuły uwagę mobilnego rynku. W Internecie można już znależć ich instrukcje obsługi.

Read more...
 

Welcome to EDABoard.com

Sponsor

Back
Top