
仿真波形如圖5。部分實現(xiàn)代碼如下:
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 實現(xiàn)難點及使用VHDL應注意的一些問題
由于VHDL語言是描述硬件行為的,相對其它開發(fā)軟件的高級語言而言,在編程過程中有一些特殊性,所以經常會出現(xiàn)語法正確但無法綜合的問題。其原因多半因為編程者對硬件內部的工作原理了解不夠,寫出的代碼硬件無法實現(xiàn)。通過這塊芯片的設計,在此總結出一些應注意的問題,供大家參考:
(1)在一個進程中只允許一個信號上升沿作為觸發(fā)條件。
(2)信號值改變后要經過一個小的延時才能生效,同個信號不能在多個進程中賦值(因為多個信號源不能同時對同一個信號驅動)。
(3)時序電路和組合電路最好不要在同一個進程中,以免費資源。
(4)一個功能模塊最好按上升沿信號分多個進程完成,各進程間用信號聯(lián)系。
(5)同一個信號在進程中的值改變后,要注意該值改變前后該進程中其它變量的變化,避免邏輯死鎖。
(6)在順序語句中,注意信號因賦值后需延時改變而與變量的不同。
(7)設計雙向三態(tài)數(shù)據(jù)線時,內部數(shù)據(jù)線最好讀寫分開。與外部結合時,不同讀數(shù)據(jù)線之間,讀寫數(shù)據(jù)線之間應使用三態(tài)門,且由讀信號控制。
本設計由于采用了VHDL語言作為輸入方式并細合可編程邏輯門陣列CPLD,大大縮短了設計周期,提高了設計的可靠性、靈活性,使用戶可根據(jù)自己的需求,方便、高效地設計出適合的串行通信芯片。





