国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

8051 IP核與 CAN IP核的接口技術(shù)

2014-09-12 03:40:50薛鵬舉倪霞林
機(jī)械制造與自動化 2014年4期
關(guān)鍵詞:發(fā)送數(shù)據(jù)PC機(jī)實(shí)例

薛鵬舉,倪霞林

(福州大學(xué)機(jī)械工程及自動化學(xué)院,福建福州350108)

0 前言

基于現(xiàn)場可編程門陣列(field programmable gate array,F(xiàn)PGA)的電子系統(tǒng)設(shè)計技術(shù)是21世紀(jì)電子應(yīng)用工程師必備的基本技能之一,而基于FPGA的可編程片上系統(tǒng)(system on a programmable chip,SOPC)設(shè)計技術(shù)是當(dāng)前電子系統(tǒng)設(shè)計領(lǐng)域最前沿的技術(shù)之一。在SOPC技術(shù)的幫助下,使電子系統(tǒng)在IP核層次上的設(shè)計成為可能[1]。所謂IP核就是使用硬件描述語言(hardware description language,HDL)實(shí)現(xiàn)的一個可重用的邏輯單元,已經(jīng)過RTL級設(shè)計優(yōu)化和功能驗證,但不包含任何具體的物理信息。因此,用戶可以綜合得到正確的門電路級設(shè)計網(wǎng)表,并可以進(jìn)行后續(xù)的結(jié)構(gòu)設(shè)計,具有很大的靈活性。它允許用戶通過編寫HDL代碼輕松地設(shè)計或改變系統(tǒng)的功能,而無需考慮設(shè)備的規(guī)格以及印刷電路板(printed circuit board,PCB)布局。本文展示了利用IP核設(shè)計CAN節(jié)點(diǎn)設(shè)的關(guān)鍵要素,提出一個系統(tǒng)的SPOC技術(shù)設(shè)計的基本方法。

CAN節(jié)點(diǎn)是指能夠掛接在CAN總線上的單元,并能通過CAN總線實(shí)現(xiàn)各個節(jié)點(diǎn)間的通信,以實(shí)現(xiàn)復(fù)雜的控制過程[2],當(dāng)前主要用于汽車的眾多傳感器間接收和發(fā)送節(jié)點(diǎn)信號,是CAN-BUS的最重要的組件之一。一個CAN節(jié)點(diǎn)包括三大模塊:CAN協(xié)議、微處理器和用戶模塊。CAN協(xié)議模塊負(fù)責(zé)提供消息,而微處理器解釋它們并生成相應(yīng)指令,最后用戶模塊執(zhí)行這些指令。

在當(dāng)今的行業(yè),主流的CAN節(jié)點(diǎn)設(shè)計仍然在使用多芯片模塊。然而,這種設(shè)計方式確實(shí)降低了系統(tǒng)的穩(wěn)定性和可靠性,并且阻礙了設(shè)計的靈活性[3]。本文證明了采用SOPC技術(shù),將8051IP核、CAN IP核以及用戶自定義模塊復(fù)合在一個單一的FPGA芯片設(shè)計的可行性。

1 實(shí)例化8051 IP核

51系列單片機(jī)是基于哈佛體系結(jié)構(gòu)的8位微控制器[5]。8051IP核是使用硬件描述語言編寫的,在QUARTUS II環(huán)境下可以被綜合成具體的硬件電路,并下載到FPGA中運(yùn)行。8051IP核源代碼是完全免費(fèi)的,可以從網(wǎng)站上下載。當(dāng)拿到一個IP核時,如何使用這才是最重要的問題。需明確的是8051IP核在使用ModelSim等仿真工具調(diào)試的時候,內(nèi)部使用的是虛擬內(nèi)存,這些內(nèi)存在真實(shí)的硬件中是不能使用的。因此,應(yīng)該用目標(biāo)FPGA中真實(shí)存在的內(nèi)存替換IP核中所有用于仿真的內(nèi)存,否則系統(tǒng)就會報錯。對于51單片機(jī),只讀存儲器(ROM)和內(nèi)部的隨機(jī)存儲器(RAM)是必需的,而外部RAM可以沒有。由于ROM和內(nèi)部RAM是用來存儲程序和數(shù)據(jù)的功能,存儲器的大小和數(shù)據(jù)總線的寬度必須要正確定義。推薦ROM的容量為8KB×8bit,片上RAM的容量為128Byte×8bit。利用C51編譯器,將51單片機(jī)源程序編譯生成后綴為hex的可執(zhí)行代碼,然后裝載到實(shí)例化好的ROM中即可。需要注意的是:傳統(tǒng)的51單片機(jī)外部使用的是復(fù)用總線,即地址總線和數(shù)據(jù)總線占用的是相同的引腳,而通過8051IP核實(shí)例化出來的51單片機(jī)采用的是非復(fù)用總線。目前,大多數(shù)CPU和外圍設(shè)備都是采用非復(fù)用總線結(jié)構(gòu),所以8051IP核可以很容易與它們互連。另一點(diǎn)需要注意的是8051IP核的IO端口是單向的,這與傳統(tǒng)51單片機(jī)的雙向IO口有明顯區(qū)別。如果想使用具有雙向功能的IO口,必須自己實(shí)例化一個外部轉(zhuǎn)換電路。最后需要強(qiáng)調(diào)的是,對于任何一款芯片,時鐘是必不可少的東西,就像是CPU的“心臟”。為了獲得合適的時鐘信號,通常還需要實(shí)例化一個鎖相環(huán)(PLL)電路。一個完整的8051系統(tǒng)的結(jié)構(gòu)(圖1)用原理圖的方式來連接各個模塊。

圖1 8051系統(tǒng)結(jié)構(gòu)

2 實(shí)例化CAN IP核

現(xiàn)場總線是用于生產(chǎn)現(xiàn)場,測量和控制設(shè)備上,實(shí)現(xiàn)雙向、串行、多點(diǎn)通信的數(shù)據(jù)總線。在制造業(yè)、冶金、交通、建筑、工業(yè)控制、汽車行業(yè)以及其他領(lǐng)域的自動化系統(tǒng)具有廣闊的應(yīng)用前景。CAN是控制器局域網(wǎng)絡(luò)(controller area network)的簡稱,最開始用于在汽車內(nèi)部零件測量與執(zhí)行之間的數(shù)據(jù)通信[3]。CAN屬于現(xiàn)場總線的范疇,是一種有效支持分布式控制和實(shí)時控制的串行通信網(wǎng)絡(luò)?,F(xiàn)在,有很多公司根據(jù)CAN協(xié)議開發(fā)出具有CAN通信功能的微控制器芯片,例如摩托羅拉的MC68HC05X4、英特爾的82527、飛利浦的82C250等。然而,傳統(tǒng)51單片機(jī)片內(nèi)部并沒有集成CAN控制器。以往通常會使用SJA1000作為CAN通信的控制器。這種設(shè)計方式有一些顯著的缺點(diǎn),例如:增加了芯片的數(shù)量,擴(kuò)大了電路板的總體面積,降低了系統(tǒng)編程的靈活性。現(xiàn)在使用IP核重用技術(shù)綜合8051IP核和CAN IP核,就好像生產(chǎn)出一款就有CAN通信功能的8051內(nèi)核單片機(jī)。要實(shí)現(xiàn)這兩個IP核的互連,就必須弄清兩個IP核對外的接口,也就是IP核使用的總線類型。

在CAN IP核中有兩種形式的總線,復(fù)用總線和非復(fù)用總線——Wishbone總線[4]。Wishbone總線是在IP核之間建立一個通用接口完成互連,可以用于在軟核、固核以及硬核之間進(jìn)行互聯(lián)。Wishbone規(guī)范具有如下特點(diǎn):簡單、緊湊,需要很少的邏輯門;數(shù)據(jù)總線寬度可以是8-64位;支持大端(big-endian)和小端(little-endian)。通過前面的介紹得知8051IP核例化后外部使用的是非復(fù)用總線,因此為了讓兩個IP核能方便地互連起來,對于CAN IP核采用Wishbone總線形式。

CAN IP核在默認(rèn)情況下使用的是復(fù)用總線,必須通過修改IP核源文件中的代碼來啟用Wishbone總線。需要注意的是:Wishbone總線的具體實(shí)現(xiàn)是不需要自己編寫的,因為CAN IP核中已實(shí)現(xiàn),只需在can_tov.v文件中,添加聲明:define CAN_WISHBONE_IF,來啟動該總線。經(jīng)過測試,發(fā)現(xiàn)如果只是做上述修改,兩個IP核之間并不能很好地通信。原因其實(shí)很簡單,兩個IP核之間雖然外部都是使用非復(fù)用總線技術(shù),但是8051IP核的總線接口類型并不是Wishbone總線。因此,需要認(rèn)真研究這兩條總線的連接細(xì)節(jié),它們的通信方式很相近,造成上述結(jié)果的主要因素是CAN IP核的片選信號有問題。同樣是在can_tov.v文件中,修改assign CS=cs_sync2&(~cs_sync3)語句為assign CS=wb_cyc_i&wb_stb_i。從這里也可以看出,如果選中實(shí)例化好的CAN控制器,需要將wb_cyc_i和wb_stb_i同時置為1。一個完整的CAN節(jié)點(diǎn)的結(jié)構(gòu)如圖2所示。

圖2 CAN節(jié)點(diǎn)結(jié)構(gòu)

3 連接CPU和CAN控制器

完成了自定義IP核后,下一個步驟是如何將它們連接起來。采用原理圖的方式進(jìn)行連接。如圖3所示,連接wrx_o引腳到wb_we_i引腳,p1_o[3]引腳到wb_rst_引腳,int0_i[0..0]引腳到irq_on引腳,datax_o[7..0]總線到wb_dat_i[7..0]總線,datax_i[7..0]總線到wb_dat_o[7..0]總線,adrx_[9..0]總線到wb_stb_i&wb_cyc_i&wb_adr_i[7..0]總線。還必須將wb_clk_i和clk_i連接到外部時鐘信號。wb_std_i和wb_cyc_i信號是非常重要的,它們共同構(gòu)成了芯片的片選信號。當(dāng)上述所有任務(wù)完成后會得到如圖3所示的結(jié)果。

圖3 8051 IP核與CAN IP核連接原理圖

在使用Keil編寫具體的CAN測試程序前,需要定義如下寄存器:

#define MODR(*(unsigned char volatile xdata*)0x0300)

#define CMR(*(unsigned char volatile xdata*)0x0301)

#define SR(*(unsigned char volatile xdata*)0x0302)

#define IR(*(unsigned char volatile xdata*)0x0303)

#define IER(*(unsigned char volatile xdata*)0x0304)

#define BTR0(*(unsigned char volatilexdata*)0x0306)

#define BTR1(*(unsigned char volatilexdata*)0x0307)

#define OCR(*(unsigned char volatile xdata*)0x0308)

#define ACR(*(unsigned char volatile xdata*)0x0310)

……

上述都是CAN控制器的內(nèi)部寄存器,須將其映射到相應(yīng)的地址。地址的第9位和第10位恒為1,就是對應(yīng)wb_std_i和wb_cyc_i引腳置1,保證片選信號有效。可以在Keil下編寫一個應(yīng)用程序,然后編譯并生成hex文件,用它來替換之前在ROM中的hex文件。最后編譯、綜合整個Quartus II項目。實(shí)驗結(jié)果如下。

圖4顯示了從FPGA目標(biāo)板發(fā)送數(shù)據(jù)“0f21 31 41 51 61 71 81”到PC機(jī)上的虛擬CAN節(jié)點(diǎn)。

圖4 從FPGA發(fā)送數(shù)據(jù)到PC

圖5 顯示了PC機(jī)上的虛擬CAN節(jié)點(diǎn)發(fā)送數(shù)據(jù)“55 02 03 04 05 06 07 08”到FPGA目標(biāo)板,并且FPGA通過串口將其回送到PC機(jī)的串口上。在PC機(jī)上使用串口調(diào)試助手觀察結(jié)果如圖5所示。

圖5 從PC發(fā)送數(shù)據(jù)到FPGA

4 結(jié)論

文中詳細(xì)描述了利用SOPC技術(shù)設(shè)計CAN節(jié)點(diǎn)的細(xì)節(jié)。借助合理的用戶自定義模塊接口,CAN節(jié)點(diǎn)在不同場景的應(yīng)用得以實(shí)現(xiàn),并且通過這種新方法設(shè)計出來的CAN總線也取得令人滿意的結(jié)果。

綜上,基于IP核的設(shè)計是將所有組件的節(jié)點(diǎn)在單個芯片上實(shí)例化,系統(tǒng)的性能更穩(wěn)定,更可靠。在使用IP核技術(shù)時,實(shí)例化相應(yīng)的模塊后關(guān)鍵步驟是正確處理不同模塊之間的通信接口。IP核的可重用和可重構(gòu),使電子系統(tǒng)的設(shè)計,從原來的硬件布局變?yōu)檐浖幊蹋@著降低了開發(fā)成本,縮短了開發(fā)周期,增強(qiáng)了穩(wěn)定性,并且具有更高的靈活性。因此,基于SOPC技術(shù)的設(shè)計方式已經(jīng)成為電子系統(tǒng)設(shè)計的必然趨勢。

[1]WISHBONE System-On-Chip Interconnection Architecture for Portable IP Cores.2002,7.

[2]Information onhttp://www.opencores.org.

[3]Information on http://www.oreganosystems.at.

[4]Altera Corp.CycloneII Device Handbook.Altera,2005.

[5]Jianguo Han and Guiyun Tian:Foundation and Application of Microcontroller.2004.

猜你喜歡
發(fā)送數(shù)據(jù)PC機(jī)實(shí)例
移動自組網(wǎng)中MAC層協(xié)議研究
基于馬爾科夫鏈的LoRaWAN網(wǎng)絡(luò)節(jié)點(diǎn)性能分析
帶標(biāo)記方式的CRDSA++協(xié)議性能分析*
基于PC機(jī)與單片機(jī)的多機(jī)通信技術(shù)及抗干擾方法
基于三菱FXPLC的感應(yīng)淬火機(jī)床與PC機(jī)的串行通信實(shí)現(xiàn)
VC.NET下實(shí)現(xiàn)dsPIC單片機(jī)與PC機(jī)的通信
電子制作(2017年23期)2017-02-02 07:16:47
使用IPSec安全傳輸數(shù)據(jù)
完形填空Ⅱ
完形填空Ⅰ
讀編往來
永修县| 建水县| 河北省| 会昌县| 庆云县| 郁南县| 仲巴县| 桑日县| 弥勒县| 德化县| 平陆县| 肥乡县| 大悟县| 永和县| 襄樊市| 历史| 来凤县| 乌兰县| 安阳市| 得荣县| 泽库县| 三门峡市| 金平| 蒙阴县| 全椒县| 桐城市| 崇义县| 九江县| 兴国县| 龙口市| 繁峙县| 阜平县| 镶黄旗| 平罗县| 荔浦县| 德兴市| 沙坪坝区| 舟山市| 商城县| 敦化市| 巴中市|