新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 用VHDL設計專用串行通信芯片

        用VHDL設計專用串行通信芯片

        作者: 時間:2009-07-17 來源:網絡 收藏
        (5)WTHR.VHD

        本文引用地址:http://www.104case.com/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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 河间市| 巴青县| 南澳县| 永康市| 陈巴尔虎旗| 贵溪市| 宣武区| 聂拉木县| 若尔盖县| 信丰县| 玉溪市| 哈尔滨市| 松潘县| 保定市| 武平县| 德清县| 大渡口区| 广宗县| 务川| 阿克苏市| 额敏县| 司法| 普格县| 平定县| 图木舒克市| 额济纳旗| 合作市| 陆川县| 阜平县| 芦山县| 福州市| 怀宁县| 新龙县| 扎赉特旗| 吴旗县| 枣庄市| 雷州市| 原平市| 五河县| 建湖县| 鄢陵县|