18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用VHDL語(yǔ)言和EDA應(yīng)用工具設(shè)計(jì)串口異步通信電路

電子設(shè)計(jì) ? 來(lái)源:半導(dǎo)體技術(shù) ? 作者:韓佩富 , 潘鋒 ? 2020-03-12 08:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 、引 言

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

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

2.1 串行異步通信的幀格式

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

利用VHDL語(yǔ)言和EDA應(yīng)用工具設(shè)計(jì)串口異步通信電路

起始位是一個(gè)邏輯0,總是加在每一幀的開(kāi)始,為的是提醒數(shù)據(jù)接收設(shè)備接收數(shù)據(jù),在接收數(shù)據(jù)位過(guò)程中又被分離出去。數(shù)據(jù)位根據(jù)串行通信協(xié)議,允許傳輸?shù)淖址L(zhǎng)度可以為5、6、7或8位。通常數(shù)據(jù)位為7位或8位,如果要傳輸非ASCII數(shù)據(jù)(假如使用擴(kuò)展字符設(shè)置的文本或者二進(jìn)制數(shù)據(jù)),數(shù)據(jù)位格式就需要采用8位。數(shù)據(jù)位被傳輸時(shí)從一個(gè)字符的最低位數(shù)據(jù)開(kāi)始,最高位數(shù)據(jù)在最后。例如字母C在ASCII表中是十進(jìn)制67,二進(jìn)制的01000011,那么傳輸?shù)膶⑹?1000010。校驗(yàn)位是為了驗(yàn)證傳輸?shù)臄?shù)據(jù)是否被正確接收,常見(jiàn)的校驗(yàn)方法是奇、偶校驗(yàn)。另外校驗(yàn)位也可以為0校驗(yàn)或者1校驗(yàn),即不管數(shù)據(jù)位中1的個(gè)數(shù)是多少,校驗(yàn)位始終為0或者1,如果在傳輸?shù)倪^(guò)程中校驗(yàn)位發(fā)生了變化,這就提示出現(xiàn)了某類錯(cuò)誤。不過(guò),在傳輸數(shù)據(jù)的時(shí)候,也可以不用校驗(yàn)位。停止位,為邏輯1,總在每一幀的末尾,可以是1位、1.5位或者2位。最常用的是1位,超過(guò)1位的停止位通常出現(xiàn)在這樣的場(chǎng)合:在處理下一個(gè)即將發(fā)送來(lái)的字符之前接收設(shè)備要求附加時(shí)間。

2.2 串行異步通信的波特率

串行口每秒發(fā)送或接收數(shù)據(jù)的位數(shù)為波特率。若發(fā)送或接收一位數(shù)據(jù)需要時(shí)間為t,則波特率為1/ t,相應(yīng)的發(fā)送或接收時(shí)鐘為1/t Hz。發(fā)送和接收設(shè)備的波特率應(yīng)該設(shè)置成一致,如果兩者的波特率不一致,將會(huì)出現(xiàn)校驗(yàn)錯(cuò)或者幀錯(cuò)。

3 、串行發(fā)送電路的設(shè)計(jì)

為簡(jiǎn)化電路設(shè)計(jì)的復(fù)雜性,采用的幀格式為: 1位開(kāi)始位+8位數(shù)據(jù)位+1位停止位,沒(méi)有校驗(yàn)位,波特率為9600。

3.1 波特率發(fā)生器的設(shè)計(jì)

要產(chǎn)生9600波特率,要有一個(gè)不低于9600 Hz的時(shí)鐘才可以。為產(chǎn)生高精度的時(shí)鐘,我選了6MHz(6M能整除9600)的晶振來(lái)提供外部時(shí)鐘。當(dāng)然,你也可以選其它頻率的時(shí)鐘來(lái)產(chǎn)生9600 Hz的時(shí)鐘。對(duì)于6MHz時(shí)鐘,需要設(shè)計(jì)一個(gè)625進(jìn)制的分頻器來(lái)產(chǎn)生9600波特率的時(shí)鐘信號(hào)。用VHDL設(shè)計(jì)分頻器較簡(jiǎn)單,在這里就不再給出源程序了。

3.2 發(fā)送電路的設(shè)計(jì)

根據(jù)采用的幀格式,需要發(fā)送的數(shù)據(jù)為10位(1位開(kāi)始位、8位數(shù)據(jù)位、1位停止位),在發(fā)送完這10位后,就應(yīng)該停止發(fā)送,并使發(fā)送端電平處于邏輯1,然后等候下次的發(fā)送。下面是實(shí)現(xiàn)上述功能的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)表示需要發(fā)送的數(shù)據(jù)幀,發(fā)送時(shí),開(kāi)始位Send_data(0)必須為邏輯0,停止位Send_data(9)必須為邏輯1,否者與硬件電路連接的設(shè)備接收到的數(shù)據(jù)會(huì)出現(xiàn)錯(cuò)誤。在發(fā)送每一幀之前,首先給輸入端en一個(gè)低電平脈沖,讓電路復(fù)位(count置0),然后開(kāi)始發(fā)送。變量count 在進(jìn)程中用來(lái)記錄發(fā)送的數(shù)據(jù)數(shù)目,當(dāng)數(shù)據(jù)幀發(fā)送完后,發(fā)送端就一直發(fā)送停止位(邏輯1)。

3.3 時(shí)序仿真

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

利用VHDL語(yǔ)言和EDA應(yīng)用工具設(shè)計(jì)串口異步通信電路

4、 串行接收電路的設(shè)計(jì)

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

利用VHDL語(yǔ)言和EDA應(yīng)用工具設(shè)計(jì)串口異步通信電路

4.1 波特率發(fā)生器和采樣時(shí)鐘的設(shè)計(jì)

為完成3次采樣,除了頻率為9600Hz的接收時(shí)鐘外,還要有一個(gè)3倍頻的采樣時(shí)鐘。下面是實(shí)現(xiàn)上述功能的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的時(shí)鐘;en控制波形的產(chǎn)生; Clock1為9600Hz的接收時(shí)鐘; Clock3為3倍頻的采樣時(shí)鐘。

4.2 接收電路的設(shè)計(jì)

串行接收電路首先要能判斷接收數(shù)據(jù)的到來(lái),即每一幀的開(kāi)始,然后對(duì)數(shù)據(jù)進(jìn)行3次采樣,最后判決輸出。為簡(jiǎn)化設(shè)計(jì),幀格式仍然采用1位開(kāi)始位+8位數(shù)據(jù)位+1位停止位。下面是設(shè)計(jì)的接收電路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 用來(lái)對(duì)波形采樣;Q(Num)《=(N(0) and N(1)) or (N(1) and N(2)) or (N(0) and N(2))是對(duì)其中1位數(shù)據(jù)的3次采樣結(jié)果判決;Num用來(lái)記錄接收的數(shù)據(jù)位數(shù);falling_edge(com)是用來(lái)時(shí)實(shí)檢測(cè)每一幀的起始位(即下降沿)的到來(lái);Valid《=Enable and Hold用來(lái)輸出到波特率發(fā)生器電路單元控制時(shí)鐘的產(chǎn)生,最后將一幀的10位數(shù)據(jù)輸出。

用MAX+plus II 9.3 Baseline將上面兩個(gè)VHDL文件制成庫(kù)器件,然后在電路圖上調(diào)出來(lái),最后做成的串行接收電路圖如圖4所示。

利用VHDL語(yǔ)言和EDA應(yīng)用工具設(shè)計(jì)串口異步通信電路

4.3 時(shí)序仿真

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

利用VHDL語(yǔ)言和EDA應(yīng)用工具設(shè)計(jì)串口異步通信電路

列波形,最后結(jié)果:接收到的數(shù)據(jù)位為6D,起始位為0,停止位為1。

5 、結(jié)束語(yǔ)

VHDL語(yǔ)言設(shè)計(jì)的出現(xiàn)從根本上改變了以往數(shù)字電路的設(shè)計(jì)模式,使電路設(shè)計(jì)由硬件設(shè)計(jì)轉(zhuǎn)變?yōu)檐浖O(shè)計(jì),這樣提高了設(shè)計(jì)的靈活性,降低了電路的復(fù)雜程度,修改起來(lái)也很方便。 利用VHDL設(shè)計(jì)的靈活性,根據(jù)串行通信協(xié)議的要求,可以在實(shí)驗(yàn)室利用先進(jìn)的EDA工具,用VHDL設(shè)計(jì)出符合自己實(shí)際需求的異步串行通信電路。

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

責(zé)任編輯:gt


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpld
    +關(guān)注

    關(guān)注

    32

    文章

    1258

    瀏覽量

    172986
  • eda
    eda
    +關(guān)注

    關(guān)注

    72

    文章

    3008

    瀏覽量

    180939
  • vhdl
    +關(guān)注

    關(guān)注

    30

    文章

    820

    瀏覽量

    131062
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    VHDL語(yǔ)言EDA仿真中的應(yīng)用

    EDA技術(shù)徹底改變了數(shù)字系統(tǒng)的設(shè)計(jì)方法和實(shí)現(xiàn)手段,借助于硬件描述語(yǔ)言的國(guó)際標(biāo)準(zhǔn)VHDL 和強(qiáng)大的EDA工具,可減少設(shè)計(jì)風(fēng)險(xiǎn)并縮短周期,隨著
    發(fā)表于 04-11 11:34 ?2397次閱讀
    <b class='flag-5'>VHDL</b><b class='flag-5'>語(yǔ)言</b>在<b class='flag-5'>EDA</b>仿真中的應(yīng)用

    請(qǐng)問(wèn)VHDL語(yǔ)言和verilog語(yǔ)言有什么區(qū)別?

    VHDL語(yǔ)言和verilog語(yǔ)言有何區(qū)別
    發(fā)表于 03-28 06:52

    請(qǐng)問(wèn)VHDL語(yǔ)言和verilog語(yǔ)言有什么區(qū)別?

    VHDL語(yǔ)言和verilog語(yǔ)言有何區(qū)別
    發(fā)表于 03-29 07:55

    基于CPLD和FPGA的VHDL語(yǔ)言電路優(yōu)化設(shè)計(jì)

    語(yǔ)言進(jìn)行CPLD/FPGA設(shè)計(jì)開(kāi)發(fā),Altera和Lattice已經(jīng)在開(kāi)發(fā)軟件方面提供了基于本公司芯片的強(qiáng)大開(kāi)發(fā)工具。但由于VHDL設(shè)計(jì)是行為級(jí)設(shè)計(jì),所帶來(lái)的問(wèn)題是設(shè)計(jì)者的設(shè)計(jì)思想與電路
    發(fā)表于 06-18 07:45

    怎么設(shè)計(jì)優(yōu)化VHDL語(yǔ)言電路?

    在語(yǔ)法和風(fēng)格上類似于高級(jí)編程語(yǔ)言,可讀性好,描述能力強(qiáng),設(shè)計(jì)方法靈活,可移植性強(qiáng),因此它已成為廣大EDA工程師的首選。目前,使用VHDL語(yǔ)言進(jìn)行CPLD/FPGA設(shè)計(jì)開(kāi)發(fā),Altera
    發(fā)表于 08-08 07:08

    怎么利用CPLD/FPGA的VHDL語(yǔ)言優(yōu)化電路?

    (PLD)的發(fā)展而發(fā)展起來(lái)的。它是一種面向設(shè)計(jì)、多層次的硬件描述語(yǔ)言,是集行為描述、RTL描述、門(mén)級(jí)描述功能為一體的語(yǔ)言,并已成為描述、驗(yàn)證和設(shè)計(jì)數(shù)字系統(tǒng)中最重要的標(biāo)準(zhǔn)語(yǔ)言之一。由于VHDL
    發(fā)表于 08-28 08:05

    分享一款不錯(cuò)的基于VHDL異步串行通信電路設(shè)計(jì)

    求一款基于VHDL異步串行通信電路設(shè)計(jì)分享
    發(fā)表于 04-08 06:16

    如何利用VHDL語(yǔ)言實(shí)現(xiàn)FPGA與單片機(jī)的串口異步通信電路?

    本文介紹利用VHDL語(yǔ)言實(shí)現(xiàn) FPGA與單片機(jī)的串口異步通信
    發(fā)表于 04-29 06:34

    vhdl語(yǔ)言ppt

    VHDL的定義和功能VHDL的發(fā)展概況程序編程語(yǔ)言和硬件描述語(yǔ)言的對(duì)比引入硬件描述語(yǔ)言對(duì)系統(tǒng)進(jìn)
    發(fā)表于 09-03 12:58 ?39次下載
    <b class='flag-5'>vhdl</b><b class='flag-5'>語(yǔ)言</b>ppt

    EDA/VHDL多媒體教學(xué)課件

    EDA/VHDL講座主要內(nèi)容一、EDA、EDA技術(shù)及其應(yīng)用與發(fā)展二、硬件描述語(yǔ)言三、FPGA和CPLD四、
    發(fā)表于 03-08 10:54 ?39次下載

    異步串行通信接口電路VHDL語(yǔ)言設(shè)計(jì)

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

    采用VHDL語(yǔ)言和EDA工具實(shí)現(xiàn)超高頻射頻標(biāo)簽數(shù)字電路

    在研究讀寫(xiě)器和射頻標(biāo)簽通信過(guò)程的基礎(chǔ)上,結(jié)合EPC C1G2協(xié)議以及ISO/IEC18000.6協(xié)議, 采用VHDL語(yǔ)言設(shè)計(jì)出一種應(yīng)用于超高頻段的射頻標(biāo)簽數(shù)字電路。對(duì)
    的頭像 發(fā)表于 08-28 08:03 ?2552次閱讀
    采用<b class='flag-5'>VHDL</b><b class='flag-5'>語(yǔ)言和</b><b class='flag-5'>EDA</b><b class='flag-5'>工具</b>實(shí)現(xiàn)超高頻射頻標(biāo)簽數(shù)字<b class='flag-5'>電路</b>

    FPGA和單片機(jī)的串行通信接口設(shè)計(jì)

    本文介紹利用VHDL語(yǔ)言實(shí)現(xiàn)FPGA與單片機(jī)的串口異步通信
    的頭像 發(fā)表于 08-03 15:45 ?1827次閱讀
    FPGA和單片機(jī)的串行<b class='flag-5'>通信</b>接口設(shè)計(jì)

    eda技術(shù)與vhdl基礎(chǔ) eda的主要功能優(yōu)點(diǎn) 現(xiàn)代EDA技術(shù)的特點(diǎn)有哪些

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

    串口屏支持哪些編程語(yǔ)言和開(kāi)發(fā)環(huán)境?

    串口屏作為一種常用的顯示和交互設(shè)備,支持多種編程語(yǔ)言和開(kāi)發(fā)環(huán)境。以下是對(duì)串口屏支持的編程語(yǔ)言和開(kāi)發(fā)環(huán)境的詳細(xì)歸納:
    的頭像 發(fā)表于 11-13 11:45 ?989次閱讀
    <b class='flag-5'>串口</b>屏支持哪些編程<b class='flag-5'>語(yǔ)言和</b>開(kāi)發(fā)環(huán)境?