异步串行通信电路设计 第6页


基于VHDL的异步串行通信电路设计 第6页
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
751com.cn
  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)andN(1))or(N(1)andN(2))or(N(0)andN(2)),这是对其中1位数据的3次采样结果判决;Num用来记录接收的数据位数;falling_edge(com)是用来时实检测每一帧的起始位(即下降沿)的到来;Valid<=EnableandHold用来输出到波特率发生器电路单元控制时钟的产生,最后将一帧的10位数据输出。其在QuartusII 10.1下的RTL级视图为图5-4所示。 
  
图5-4 数据接收端的RTL级视图
用QuartusII 10.1将上面两个VHDL文件制成库器件,然后在电路图上调出来,最后做成的串行接收电路图如图5-4所示。图5-5 总模块逻辑图

5.3时序仿真
  时序仿真如图5所示,Receive为接收到的序列波形,最后结果:接收到的数据位为6D,起始位为0,停止位为1。 
图5-6 串行接收电路的时序仿真6小结
VHDL语言设计的出现从根本上改变了以往数字电路的设计模式,使电路设计由硬件设计转变为软件设计,这样提高了设计的灵活性,降低了电路的复杂程度,修改起来也很方便。 利用VHDL设计的灵活性,根据串行通信协议的要求,可以在实验室利用先进的EDA工具,用VHDL设计出符合自己实际需求的异步串行通信电路。
本文设计出的基于VHDL异步串行通信电路,在实验室已经与计算机串口RS-232进行了通信实验(注意:TTL和RS-232逻辑电平的转换)。实验证明,0至255的所有数据都能被正确收、发。

上一页  [1] [2] [3] [4] [5] [6] [7] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有