新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 用VHDL设计专用串行通信芯片

用VHDL设计专用串行通信芯片

作者:时间:2009-07-17来源:网络收藏
(5)WTHR.VHD

本文引用地址:http://www.eepw.com.cn/article/157976.htm

WTHR.VHD作为整个的发送模块,其中包括发送保持器、并/串转换。

端口描述如下:

entity wthr is

port (sen:in STD_LOGIC; --发送使能信号

whtr: in STD_LOGIC; --写发送保持器信号

dbus: in STD_LOGIC_VECTOR (7 downto 0;

--8位数据线,单向

rsthr:in STD_LOGIC; --清发送保持器

thre:out STD_LOGIC; --发送保持器数据空

thre:out STD_LOGIC; --发送数据线

clkout:out STD_LOGIC; --发送数据同步时钟信号

sclk: in STD_LOGIC); --波特率发生器产生的分频信号

end wthr;

当发送保持器无数据时,thre信号有效,通知CPU可写。一旦CPU写入数据且sen有效,便根据波特率发生器产生的sclk信号将数据并/串转换,并通过dout和clkout将数据和同步时钟发送。

仿真波形如图5。部分实现代码如下:

process (rsthr,sclk,sen,sef) --parallel data to serial data variable l:integer range 0 to 7;

begin

if rsthr='1' then

m=0;

1:=7;

sef='1';

elsif wthr='1'then

sef='0';

elsif sen='1'and sef='0' then

if sclk'event and sclk='1' then

dout=w_p(1);

m=m+1;

l:=1-1;

if m=7 then

m=0;

1:=7;

esf=='1';

end if;

end if;

end if;

end process;

3 实现难点及使用应注意的一些问题

由于语言是描述硬件行为的,相对其它开发软件的高级语言而言,在编程过程中有一些特殊性,所以经常会出现语法正确但无法综合的问题。其原因多半因为编程者对硬件内部的工作原理了解不够,写出的代码硬件无法实现。通过这块,在此总结出一些应注意的问题,供大家参考:

(1)在一个进程中只允许一个信号上升沿作为触发条件。

(2)信号值改变后要经过一个小的延时才能生效,同个信号不能在多个进程中赋值(因为多个信号源不能同时对同一个信号驱动)。

(3)时序电路和组合电路最好不要在同一个进程中,以免费资源。

(4)一个功能模块最好按上升沿信号分多个进程完成,各进程间用信号联系。

(5)同一个信号在进程中的值改变后,要注意该值改变前后该进程中其它变量的变化,避免逻辑死锁。

(6)在顺序语句中,注意信号因赋值后需延时改变而与变量的不同。

(7)双向三态数据线时,内部数据线最好读写分开。与外部结合时,不同读数据线之间,读写数据线之间应使用三态门,且由读信号控制。

由于采用了语言作为输入方式并细合可编程逻辑门阵列CPLD,大大缩短了设计周期,提高了设计的可靠性、灵活性,使用户可根据自己的需求,方便、高效地设计出适合的


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭