您当前的位置:五五电子网电子知识单片机-工控设备51单片机基于VHDL的异步串行通信电路设计 正文
基于VHDL的异步串行通信电路设计

基于VHDL的异步串行通信电路设计

点击数:7379 次   录入时间:03-04 11:35:59   整理:http://www.55dianzi.com   51单片机

Valid<=Enable and Hold; 

process(clk1,clr) 

variable Num:integer range 0 to 9 :=0; 

begin 

if clr=‘0‘ then 

Enable<=‘1‘  Num:=0; Q<="0000000000"; 

elsif (rising_edge(clk1)) then 

Q(Num)<=(N(0) and N(1)) or (N(1) and N(2)) or (N(0) and N(2)); 

if Num=9 then 

Enable<=‘0‘; Num:=0; 

else 

Num:=Num+1; 

end if; 

end if; 

end process; 

process(clk3,clr) 

variable m:integer range 0 to 2 :=0; 

begin 

if clr=‘0‘ then 

m:=0; 

elsif(rising_edge(clk3)) then 

N(m)<=com; 

if m=2 then 

m:=0; 

else 

m:=m+1; 

end if; 

end if; 

end process; 

process(clr,com) 

begin 


if clr=‘0‘ then 
Hold<=‘0‘; 

elsif falling_edge(com) then 

Hold<=‘1‘; 

end if; 

end process; 

end com_receive10_arc; 

其中,N(m)<=com 用来对波形采样;Q(Num)<=(N(0) and N(1)) or (N(1) and N(2)) or (N(0) and N(2))是对其中1位数据的3次采样结果判决;Num用来记录接收的数据位数;falling_edge(com)是用来时实检测每一帧的起始位(即下降沿)的到来;Valid<=Enable and Hold用来输出到波特率发生器电路单元控制时钟的产生,最后将一帧的10位数据输出。 

用MAX+plus II 9.3 Baseline将上面两个VHDL文件制成库器件,然后在电路图上调出来,最后做成的串行接收电路图如图4所示。 

按此在新窗口浏览图片
4.3 时序仿真 
时序仿真如图5所示,Receive为接收到的序 

按此在新窗口浏览图片

列波形,最后结果:接收到的数据位为6D,起始位为0,停止位为1。 

5 结束语 

VHDL语言设计的出现从根本上改变了以往数字电路的设计模式,使电路设计由硬件设计转变为软件设计,这样提高了设计的灵活性,降低了电路的复杂程度,修改起来也很方便。 利用VHDL设计的灵活性,根据串行通信协议的要求,可以在实验室利用先进的EDA工具,用VHDL设计出符合自己实际需求的异步串行通信电路。 

本文设计出的基于VHDL异步串行通信电路,在实验室已经与计算机串口RS-232进行了通信实验(注意:TTL和RS-232逻辑电平的转换)。实验证明,0至255的所有数据都能被正确收、发。 

参考文献: 

[1] ARMSTRONG J R, FRAY F G. VHDL设计表示和综合[M].李宗伯,王蓉晖译.北京:机械工业出版社, 2002. 

[2] SKAHILL K.可编程逻辑系统的VHDL设计技术[M].朱明程,孙普译.南京:东南大学出版社,1998. 

[3] 仇玉章. 微型计算机系统接口技术[M]. 南京:江苏科技出版社,1997. 



上一页  [1] [2] 


本文关键字:通信  51单片机单片机-工控设备 - 51单片机