衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

利用VHDL語言和EDA應用工具設計串口異步通信電路

電子設計 ? 來源:半導體技術 ? 作者:韓佩富 , 潘鋒 ? 2020-03-12 08:00 ? 次閱讀

1 、引 言

隨著電子技術的發展,現場可編程門陣列 FPGA和復雜可編程邏輯器件CPLD的出現,使得電子系統的設計者利用與器件相應的電子CAD軟件,在實驗室里就可以設計自己的專用集成電路ASIC器件。這種可編程ASIC不僅使設計的產品達到小型化、集成化和高可靠性,而且器件具有用戶可編程特性,大大縮短了設計周期,減少了設計費用,降低了設計風險。目前數字系統的設計可以直接面向用戶需求,根據系統的行為和功能要求,自上至下地逐層完成相應的描述﹑綜合﹑優化﹑仿真與驗證,直到生成器件,實現電子設計自動化。其中電子設計自動化(EDA)的關鍵技術之一就是可以用硬件描述語言(HDL)來描述硬件電路。 VHDL是用來描述從抽象到具體級別硬件的工業標準語言,它是由美國國防部在80年代開發的HDL,現在已成為IEEE承認的標準硬件描述語言。VHDL支持硬件的設計、驗證、綜合和測試,以及硬件設計數據的交換、維護、修改和硬件的實現,具有描述能力強、生命周期長、支持大規模設計的分解和已有設計的再利用等優點。利用VHDL這些優點和先進的EDA工具,根據具體的實際要求,我們可以自己來設計串口異步通信電路。

2 、串口異步通信的幀格式和波特率

2.1 串行異步通信的幀格式

在串行異步通信中,數據位是以字符為傳送單位,數據位的前、后要有起始位、停止位,另外可以在停止位的前面加上一個比特位(bit)的校驗位。其幀格式如圖1所示。

利用VHDL語言和EDA應用工具設計串口異步通信電路

起始位是一個邏輯0,總是加在每一幀的開始,為的是提醒數據接收設備接收數據,在接收數據位過程中又被分離出去。數據位根據串行通信協議,允許傳輸的字符長度可以為5、6、7或8位。通常數據位為7位或8位,如果要傳輸非ASCII數據(假如使用擴展字符設置的文本或者二進制數據),數據位格式就需要采用8位。數據位被傳輸時從一個字符的最低位數據開始,最高位數據在最后。例如字母C在ASCII表中是十進制67,二進制的01000011,那么傳輸的將是11000010。校驗位是為了驗證傳輸的數據是否被正確接收,常見的校驗方法是奇、偶校驗。另外校驗位也可以為0校驗或者1校驗,即不管數據位中1的個數是多少,校驗位始終為0或者1,如果在傳輸的過程中校驗位發生了變化,這就提示出現了某類錯誤。不過,在傳輸數據的時候,也可以不用校驗位。停止位,為邏輯1,總在每一幀的末尾,可以是1位、1.5位或者2位。最常用的是1位,超過1位的停止位通常出現在這樣的場合:在處理下一個即將發送來的字符之前接收設備要求附加時間。

2.2 串行異步通信的波特率

串行口每秒發送或接收數據的位數為波特率。若發送或接收一位數據需要時間為t,則波特率為1/ t,相應的發送或接收時鐘為1/t Hz。發送和接收設備的波特率應該設置成一致,如果兩者的波特率不一致,將會出現校驗錯或者幀錯。

3 、串行發送電路的設計

為簡化電路設計的復雜性,采用的幀格式為: 1位開始位+8位數據位+1位停止位,沒有校驗位,波特率為9600。

3.1 波特率發生器的設計

要產生9600波特率,要有一個不低于9600 Hz的時鐘才可以。為產生高精度的時鐘,我選了6MHz(6M能整除9600)的晶振來提供外部時鐘。當然,你也可以選其它頻率的時鐘來產生9600 Hz的時鐘。對于6MHz時鐘,需要設計一個625進制的分頻器來產生9600波特率的時鐘信號。用VHDL設計分頻器較簡單,在這里就不再給出源程序了。

3.2 發送電路的設計

根據采用的幀格式,需要發送的數據為10位(1位開始位、8位數據位、1位停止位),在發送完這10位后,就應該停止發送,并使發送端電平處于邏輯1,然后等候下次的發送。下面是實現上述功能的VHDL源程序:

library ieee;

use ieee.std_logic_1164.all;

entity Com is

port(clk,en:in std_logic;

Send_data:in std_logic_vector(9 downto 0);

serialut std_logic);

end com;

architecture com_arc of com is

begin

process(clk)

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

begin

if en=‘0’ then

count:=0;

serial《=‘1’;

elsif rising_edge(clk) then

if count=9 then

serial《=Send_data(9);

else

serial《=Send_data(count);

count:=count+1;

end if;

end if;

end process;

end com_arc;

其中,Send_data(0 to 9)表示需要發送的數據幀,發送時,開始位Send_data(0)必須為邏輯0,停止位Send_data(9)必須為邏輯1,否者與硬件電路連接的設備接收到的數據會出現錯誤。在發送每一幀之前,首先給輸入端en一個低電平脈沖,讓電路復位(count置0),然后開始發送。變量count 在進程中用來記錄發送的數據數目,當數據幀發送完后,發送端就一直發送停止位(邏輯1)。

3.3 時序仿真

選EDA工具,對VHDL源程序編譯。用的是 Altera公司的MAX+plus II 9.3 Baseline,這個工具支持VHDL的編譯、仿真。圖2是編譯后的仿真結果,其中,Clk為頻率9600Hz的時鐘,Send_data0為開始位,Send_data[8..0]為數據位, Send_data9為停止位。結果顯示,輸出完全是按數據幀格式發送的。

利用VHDL語言和EDA應用工具設計串口異步通信電路

4、 串行接收電路的設計

接收電路比發送電路要復雜,接收電路要時實檢測起始位的到來,一旦檢測到起始位到,就要將這一幀數據接收下來。為提高接收的準確性,減少誤碼率,每一位數據都用3倍頻的波特率對數據進行采樣(如圖3所示),然后對3次采樣結果進行判決:如果3次采樣中至少有2次為高電平,則接收這一位數據被判決為高電平,否者,為低電平。

利用VHDL語言和EDA應用工具設計串口異步通信電路

4.1 波特率發生器和采樣時鐘的設計

為完成3次采樣,除了頻率為9600Hz的接收時鐘外,還要有一個3倍頻的采樣時鐘。下面是實現上述功能的VHDL源程序:

library ieee;

use ieee.std_logic_1164.all;

entity count625 is

port(clk,en:in std_logic; Clock1,Clock3ut std_logic);

end count625;

architecture count625_arc of count625 is

begin

process(clk,en)

variable count:integer range 0 to 625 :=0;

begin

if en=‘0’ then

NUll;

elsif (rising_edge(clk)) then

count:=count+1;

if count=625 then

Clock1《=‘1’; count:=0;

else

Clock1《=‘0’;

end if;

if (count=100 or count=300 or count=500 ) then

Clock3《=‘1’;

else

Clock3《=‘0’;

end if;

end if;

end process;

end count625_arc;

其中clk為6MHz的時鐘;en控制波形的產生; Clock1為9600Hz的接收時鐘; Clock3為3倍頻的采樣時鐘。

4.2 接收電路的設計

串行接收電路首先要能判斷接收數據的到來,即每一幀的開始,然后對數據進行3次采樣,最后判決輸出。為簡化設計,幀格式仍然采用1位開始位+8位數據位+1位停止位。下面是設計的接收電路VHDL程序:

library ieee;

use ieee.std_logic_1164.all;

entity com_receive10 is

port(com,clr,clk1,clk3:in std_logic;Qut std_logic_vector(0 to 9);Validut std_logic); end com_receive10;

architecture com_receive10_arc of com_receive10 is

Signal Enable:std_logic :=‘1’;

Signal Hold:std_logic :=‘0’;

Signal N:std_logic_vector(0 to 2) :=“000”;

begin

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所示。

利用VHDL語言和EDA應用工具設計串口異步通信電路

4.3 時序仿真

時序仿真如圖5所示,Receive為接收到的序

利用VHDL語言和EDA應用工具設計串口異步通信電路

列波形,最后結果:接收到的數據位為6D,起始位為0,停止位為1。

5 、結束語

VHDL語言設計的出現從根本上改變了以往數字電路的設計模式,使電路設計由硬件設計轉變為軟件設計,這樣提高了設計的靈活性,降低了電路的復雜程度,修改起來也很方便。 利用VHDL設計的靈活性,根據串行通信協議的要求,可以在實驗室利用先進的EDA工具,用VHDL設計出符合自己實際需求的異步串行通信電路。

本文設計出的基于VHDL異步串行通信電路,在實驗室已經與計算機串口RS-232進行了通信實驗(注意:TTL和RS-232邏輯電平的轉換)。實驗證明,0至255的所有數據都能被正確收、發。

責任編輯:gt


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpld
    +關注

    關注

    32

    文章

    1257

    瀏覽量

    169637
  • eda
    eda
    +關注

    關注

    71

    文章

    2788

    瀏覽量

    173881
  • vhdl
    +關注

    關注

    30

    文章

    817

    瀏覽量

    128346
收藏 人收藏

    評論

    相關推薦

    VHDL語言EDA仿真中的應用

    EDA技術徹底改變了數字系統的設計方法和實現手段,借助于硬件描述語言的國際標準VHDL 和強大的EDA工具,可減少設計風險并縮短周期,隨著
    發表于 04-11 11:34 ?2140次閱讀
    <b class='flag-5'>VHDL</b><b class='flag-5'>語言</b>在<b class='flag-5'>EDA</b>仿真中的應用

    請問VHDL語言和verilog語言有什么區別?

    VHDL語言和verilog語言有何區別
    發表于 03-28 06:52

    請問VHDL語言和verilog語言有什么區別?

    VHDL語言和verilog語言有何區別
    發表于 03-29 07:55

    基于CPLD和FPGA的VHDL語言電路優化設計

    語言進行CPLD/FPGA設計開發,Altera和Lattice已經在開發軟件方面提供了基于本公司芯片的強大開發工具。但由于VHDL設計是行為級設計,所帶來的問題是設計者的設計思想與電路
    發表于 06-18 07:45

    怎么設計優化VHDL語言電路

    在語法和風格上類似于高級編程語言,可讀性好,描述能力強,設計方法靈活,可移植性強,因此它已成為廣大EDA工程師的首選。目前,使用VHDL語言進行CPLD/FPGA設計開發,Altera
    發表于 08-08 07:08

    怎么利用CPLD/FPGA的VHDL語言優化電路

    (PLD)的發展而發展起來的。它是一種面向設計、多層次的硬件描述語言,是集行為描述、RTL描述、門級描述功能為一體的語言,并已成為描述、驗證和設計數字系統中最重要的標準語言之一。由于VHDL
    發表于 08-28 08:05

    分享一款不錯的基于VHDL異步串行通信電路設計

    求一款基于VHDL異步串行通信電路設計分享
    發表于 04-08 06:16

    如何利用VHDL語言實現FPGA與單片機的串口異步通信電路

    本文介紹利用VHDL語言實現 FPGA與單片機的串口異步通信
    發表于 04-29 06:34

    vhdl語言ppt

    VHDL的定義和功能VHDL的發展概況程序編程語言和硬件描述語言的對比引入硬件描述語言對系統進
    發表于 09-03 12:58 ?39次下載
    <b class='flag-5'>vhdl</b><b class='flag-5'>語言</b>ppt

    EDA/VHDL多媒體教學課件

    EDA/VHDL講座主要內容一、EDAEDA技術及其應用與發展二、硬件描述語言三、FPGA和CPLD四、
    發表于 03-08 10:54 ?39次下載

    異步串行通信接口電路VHDL語言設計

    摘要:提出了1種基于CPLD、EPLD或FPGA等可編程邏輯器件的異步串行通信接口電路的設計方法。該方法簡單快捷。易于實現。而且可以作為異步串行通信
    發表于 04-30 09:58 ?46次下載

    采用VHDL語言和EDA工具實現超高頻射頻標簽數字電路

    在研究讀寫器和射頻標簽通信過程的基礎上,結合EPC C1G2協議以及ISO/IEC18000.6協議, 采用VHDL語言設計出一種應用于超高頻段的射頻標簽數字電路。對
    的頭像 發表于 08-28 08:03 ?2107次閱讀
    采用<b class='flag-5'>VHDL</b><b class='flag-5'>語言和</b><b class='flag-5'>EDA</b><b class='flag-5'>工具</b>實現超高頻射頻標簽數字<b class='flag-5'>電路</b>

    FPGA和單片機的串行通信接口設計

    本文介紹利用VHDL語言實現FPGA與單片機的串口異步通信
    的頭像 發表于 08-03 15:45 ?1408次閱讀
    FPGA和單片機的串行<b class='flag-5'>通信</b>接口設計

    eda技術與vhdl基礎 eda的主要功能優點 現代EDA技術的特點有哪些

    EDA技術和VHDL是緊密相連的。在EDA設計中,VHDL通常用于描述數字電路的功能和行為,并通過邏輯分析器、仿真器等
    的頭像 發表于 08-09 12:41 ?1995次閱讀

    串口屏支持哪些編程語言和開發環境?

    串口屏作為一種常用的顯示和交互設備,支持多種編程語言和開發環境。以下是對串口屏支持的編程語言和開發環境的詳細歸納:
    的頭像 發表于 11-13 11:45 ?343次閱讀
    <b class='flag-5'>串口</b>屏支持哪些編程<b class='flag-5'>語言和</b>開發環境?
    真人百家乐赌法| 足球现金网| 百家乐官网能赚大钱吗| 澳门玩百家乐官网00| 同花顺百家乐娱乐城| 仪陇县| 24山在风水学中应用| 德州扑克读牌| 百家乐官网网站赌钱吗| 百家乐分析软体| 大发888真人真钱游戏| 百家乐官网翻天粤语版qvod| 百家乐游戏程序出售| 百乐门| 百家乐官网筹码| 棋牌新教室| 新澳博百家乐官网的玩法技巧和规则 | 中华百家乐的玩法技巧和规则| 澳门百家乐官网鸿福厅| 百家乐现金网信誉排名| 嫩江县| 百家乐赢的秘籍在哪| 百家乐官方网站| 新澳博百家乐现金网| 贵族娱乐城| 百家乐二号博彩正网| 余江县| 最新百家乐双面数字筹码| 伟易博百家乐官网现金网| 百家乐在线赌场娱乐网规则| 百家乐官网包赢| 免费百家乐过滤| 百家乐官网赌博博彩赌博网| 大发888缺少 casino| 免费百家乐官网游戏下| 智尊娱乐| 百家乐电投| 赌场百家乐官网技巧| 红宝石百家乐的玩法技巧和规则| 百家乐官网视频游戏世界| 碧桂园太阳城户型图|