日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > EDA > 電子設(shè)計自動化
[導(dǎo)讀]一、硬件電路設(shè)計本文選用CPLD 是ALTERA 公司的EPM240T100,結(jié)合MAX232 接口芯片進行串口通信設(shè)計,框圖如下圖1 所示。 圖1 CPLD串口通信模塊硬件設(shè)計二、VHDL程序模塊設(shè)計及描述使用VHDL 對CPLD 進行編程,設(shè)計3 個

一、硬件電路設(shè)計

本文選用CPLD 是ALTERA 公司的EPM240T100,結(jié)合MAX232 接口芯片進行串口通信設(shè)計,框圖如下圖1 所示。


圖1 CPLD串口通信模塊硬件設(shè)計

二、VHDL程序模塊設(shè)計及描述

使用VHDL 對CPLD 進行編程,設(shè)計3 個模塊,波特率發(fā)生模塊,接收器,發(fā)送器。

1. 波特率發(fā)生模塊

波特率發(fā)生器實際是一個分頻器,如前所述,本文設(shè)計的波特率為19.2kb/ 秒,設(shè)計使用的時鐘頻率為10MHz,所以計數(shù)器進行計數(shù)時計數(shù)到260進行翻轉(zhuǎn)。

程序如下(關(guān)鍵部分保留,非必要部分用……代替):

……

ENTITY uart IS

GENERIC(d_len:INteGER:=8);

PORT (

f10MHz:IN STD_LOGIC;-- 系統(tǒng)時鐘

reset:IN STD_LOGIC;-- 復(fù)位信號

rxd:IN STD_LOGIC; -- 串行接收

txd:OUT STD_LOGIC;-- 串行發(fā)送

);

END uart;

ARCHITECTURE behav of uart IS

……

BEGIN

rxds<=rxd;

PROCESS(f10MHz,reset)

-- 設(shè)置波特率發(fā)生器 19200kb/s

VARIABLE clk19200hz: STD_LOGIC;

VARIABLE count:INTEGER RANGE 0 TO 260;

BEGIN

IF reset='0' THEN

count:=0;

clk19200hz:='0';

ELSIF f10MHz'EVENT AND f10MHz='1' THEN

IF count=260 THEN

count:=0;clk19200hz:= NOT clk19200hz;

ELSE

count:=count+1;

END IF;

END IF;

baud_rate<=clk19200hz;

END PROCESS;

2. 發(fā)送模塊

發(fā)送部分采用狀態(tài)機t_state 進行編程,共設(shè)兩個值:t-start 和t_shift,分別表示發(fā)送開始以及發(fā)送保持狀態(tài)。復(fù)位鍵按下時設(shè)置到t-start 狀態(tài),并將發(fā)送數(shù)據(jù)位設(shè)為“1”, 發(fā)送的數(shù)據(jù)位數(shù)計數(shù)為0,在t-start 狀態(tài),狀態(tài)機將處于這一個狀態(tài)并等待波特率計數(shù)信號的電平上升沿到來。上升沿到來時,依據(jù)t_state 狀態(tài)的不同值做不同處理,如果是t-start 開始狀態(tài)則先讀待發(fā)送的數(shù)據(jù),并發(fā)送開始位“0”,然后將狀態(tài)轉(zhuǎn)到發(fā)送保持t_shift 狀態(tài),在發(fā)送保持t_shift 狀態(tài),不斷判斷發(fā)送的數(shù)據(jù)位數(shù)是否滿8 位,如果滿了則回歸t-start 狀態(tài),否則繼續(xù)發(fā)送,保持在t_shift 狀態(tài),為避免干擾將其余情況下的狀態(tài)自動跳轉(zhuǎn)到t-start 狀態(tài)。程序如下:

PROCESS(baud_rate,reset,data)

-- 數(shù)據(jù)發(fā)送部分

VARIABLE t_no:INTEGER RANGE 0 TO 8;

-- 發(fā)送的數(shù)據(jù)各位的位序號

VARIABLE txds:STD_LOGIC;

VARIABLE dtmp:STD_LOGIC_VECTOR(7

DOWNTO 0);

BEGIN

IF reset='0' THEN

t_state<=t_start;

txds:='1';

t_no:=0;

ELSIF baud_rate'event AND baud_rate='1' THEN

CASE t_state IS

WHEN t_start=>

dtmp:=data;

txds:='0'; -- 發(fā)送開始

t_state<=t_shift;

WHEN t_shift=> IF t_no=d_len THEN

txds:='1'; -- 發(fā)送結(jié)束

t_no:=0;

t_state<=t_start;

ELSE

txds:=dtmp(t_no); -- 發(fā)送一字節(jié)數(shù)據(jù)

t_no:=t_no+1;

END IF;

WHEN thers=>t_state<=t_start;

END CASE;

END IF;

txd<=txds;

END PROCESS;

3. 數(shù)據(jù)接收模塊

接收部分采用狀態(tài)機進行編程,共設(shè)兩個狀態(tài):

r-start 和r_shift 分別表示接收開始以及接收保持狀態(tài);復(fù)位鍵按下時設(shè)置到r-start 狀態(tài),并將待接收存放數(shù)據(jù)的data 賦值為“00000000”, 在r-start狀態(tài),接收狀態(tài)機將處于這一個狀態(tài)并等待波特率計數(shù)信號的電平上升沿到來。波特率發(fā)生模塊的計數(shù)上升沿到來,依據(jù)狀態(tài)的不同值做不同處理,如果是r-start 接收開始狀態(tài)則等待開始位信號,檢測到rxds=‘0’的開始位信號好轉(zhuǎn)到r_shift 接收保持狀態(tài),r_shift 接收保持狀態(tài)會不斷判斷接收的數(shù)據(jù)位數(shù)是否滿8 位,如果滿了則回歸r-start 狀態(tài),否則繼續(xù)接收,保持在r_shift 接收保持狀態(tài),為避免干擾將其余情況下的狀態(tài)自動跳轉(zhuǎn)到r-start 接收開始狀態(tài),程序與發(fā)送部分類似,此處省略。

三、串口通信的VHDL程序仿真結(jié)果

串行口通信的仿真結(jié)果如圖2 所示。從圖中可以看出,每發(fā)送完一個字節(jié),即8 位數(shù)據(jù)后,線路上將輸出一個高電平,之后又開始傳送下一個字節(jié)。

同樣,仿真波形顯示,有效數(shù)據(jù)到達接收管腳rxd之前,線路上保持為高電平,直到收到一個低電平起始位,將該起始位后的8 位數(shù)據(jù)串行接收后依次送到保存接收結(jié)果的信號data 的各位。


圖2 串行口通信仿真波形圖

串口通信的硬件驗證

將程序通過在系統(tǒng)編程下載入配套的CPLD 電路板進行硬件驗證,按照以下步驟進行。

(1)確定管腳對應(yīng)關(guān)系:

串行接收管腳rxd 與max232 的12 腳R1OUT對應(yīng); 串行發(fā)送管腳txd 與max232 的11 腳T1IN對應(yīng);復(fù)位信號reset 與按鍵S1 對應(yīng)。

(2)由QUARTUS II 進行管腳分配:

f10MHz 在MAXII 芯片上對應(yīng)的管腳號為12 ;S1 在MAXII 芯片上對應(yīng)的管腳號為21 ; rxd 在MAXII 芯片上對應(yīng)的管腳號為89; txd 在MAXII 芯片上對應(yīng)的管腳號為90。

(3)電平定義:

按鍵S1 按下時表示輸入信號為低電平。

應(yīng)用“ 串口調(diào)試助手” 進行驗證, 在發(fā)送窗口隨機輸入需要發(fā)送的字符,可以發(fā)現(xiàn)由PC 機發(fā)給CPLD 的字符被CPLD 傳送回來并在接收窗口顯示出來。在批量隨機數(shù)據(jù)發(fā)送后分析:在傳輸時19.2kb/s 傳輸速率下,誤碼率達10-8。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

在電子電路中,電解電容的紋波電流承受能力直接影響其使用壽命和電路穩(wěn)定性。準確測試紋波電流不僅能驗證電容性能是否達標,也是電路設(shè)計可靠性驗證的關(guān)鍵環(huán)節(jié)。以下從測試原理、設(shè)備準備、操作步驟到數(shù)據(jù)解讀,全面介紹電解電容紋波電流...

關(guān)鍵字: 電解電容 紋波電流 電路設(shè)計

在電子電路設(shè)計與實踐中,穩(wěn)壓芯片是維持穩(wěn)定輸出電壓的關(guān)鍵組件。然而,當(dāng)我們將兩個輸出電壓不同的穩(wěn)壓芯片的輸出腳連接在一起時,會引發(fā)一系列復(fù)雜的物理現(xiàn)象和潛在風(fēng)險。這一操作不僅違反了常規(guī)的電路設(shè)計原則,還可能對電路系統(tǒng)造成...

關(guān)鍵字: 穩(wěn)壓 芯片 電路設(shè)計

在當(dāng)今電子技術(shù)飛速發(fā)展的時代,隨著電子產(chǎn)品不斷向小型化、高性能化邁進,印刷電路板(PCB)的設(shè)計變得愈發(fā)復(fù)雜和精密。過孔,作為 PCB 中連接不同層線路的關(guān)鍵元件,其對信號完整性的影響已成為電路設(shè)計中不可忽視的重要因素。...

關(guān)鍵字: 印刷電路板 電路設(shè)計 信號

IIC(Inter IC Bus)協(xié)議是一種廣泛應(yīng)用于嵌入式系統(tǒng)中的同步半雙工通信協(xié)議。隨著電子設(shè)備的復(fù)雜性不斷增加,高多層電路板設(shè)計變得越來越普遍。在高多層電路板中實現(xiàn)可靠的IIC通信,需要綜合考慮布線策略、電源設(shè)計、...

關(guān)鍵字: 電路板 電路設(shè)計

在現(xiàn)代高速、高密度的電路設(shè)計領(lǐng)域,電路完整性是確保電子系統(tǒng)可靠運行的關(guān)鍵要素。回路電感作為電路中的一個重要參數(shù),對電路完整性有著多方面的深遠影響。從信號傳輸?shù)臏蚀_性到電源系統(tǒng)的穩(wěn)定性,回路電感在其中扮演著不容忽視的角色。...

關(guān)鍵字: 電子系統(tǒng) 回路電感 電路設(shè)計

在現(xiàn)代汽車電子控制系統(tǒng)中,CAN(Controller Area Network,控制器局域網(wǎng))總線作為一種高效、可靠的通信協(xié)議,發(fā)揮著舉足輕重的作用。它不僅連接著發(fā)動機控制單元(ECU)、變速器控制單元、制動系統(tǒng)控制單...

關(guān)鍵字: 車規(guī)級CAN總線 電路設(shè)計

串口全稱是串行接口(Serial Interface),串口通訊指僅用一對傳輸線就能將數(shù)據(jù)以比特位進行傳輸?shù)囊环N通訊方式。盡管串口通訊必按字節(jié)傳輸?shù)牟⑿型ㄐ怕谴诳梢栽趦H用兩根線的情況下完成數(shù)據(jù)傳輸,大大降低了成本...

關(guān)鍵字: 串口 UART

隨著電腦技術(shù)的發(fā)展,一些老的設(shè)備在新電腦上不能被使用,主要原因是不管是臺式電腦,還是筆記本電腦,都很少有串口接口,也就是我們常說的COM口。好在這些設(shè)備都有USB接口,不妨通過接口轉(zhuǎn)換的方式,使我們的設(shè)備在新電腦上重新被...

關(guān)鍵字: 串口 USB

串口:串口是一個泛稱,UART、TTL、RS232、RS485都遵循類似的通信時序協(xié)議,因此都被通稱為串口。串口通訊應(yīng)用是工控人必須掌握的一個技能,幾乎在每一個項目中都會用到,今天我們就來詳細比較一下它們究竟有何區(qū)別。

關(guān)鍵字: 串口 協(xié)議

串聯(lián)一個二極管,是利用二極管的單向?qū)щ姷奶匦?,實現(xiàn)了最簡單可靠的低成本防反接功能電路。這種低成本方案一般在小電流的場合,類似小玩具等。

關(guān)鍵字: 電路設(shè)計 串聯(lián)
關(guān)閉