PCI多軸運(yùn)動(dòng)控制卡的VHDL-CPLD接口設(shè)計(jì)標(biāo)題
出處:pengk31 發(fā)布于:2007-04-29 09:25:01
PCI多軸運(yùn)動(dòng)控制卡的VHDL-CPLD接口設(shè)計(jì)標(biāo)題
上海豪威IC設(shè)計(jì)有限公司 怯肇乾
PCI多軸運(yùn)動(dòng)控制卡是精密伺服驅(qū)動(dòng)控制系統(tǒng)中的主要部件,傳統(tǒng)設(shè)計(jì)多采用PCI橋件和運(yùn)動(dòng)控制器件構(gòu)建,這樣雖然開(kāi)發(fā)周期短,但成本卻非常高。用"CPLD做PCI接口 + TMS320C2400系列DSP做運(yùn)動(dòng)控制器?quot;的設(shè)計(jì),構(gòu)成的系統(tǒng)簡(jiǎn)潔可靠,成本低廉,開(kāi)發(fā)周期短,是一種行之有效的板卡開(kāi)發(fā)途徑。根據(jù)PCI總線的傳輸時(shí)序和運(yùn)動(dòng)控制器件的讀寫(xiě)時(shí)序要求,以Altera的CPLD器件和開(kāi)發(fā)工具,使用VHDL語(yǔ)言,進(jìn)行狀態(tài)機(jī)構(gòu)造,很快地實(shí)現(xiàn)了多軸運(yùn)動(dòng)控制卡的PCI接口設(shè)計(jì),并進(jìn)行了功能模擬和定時(shí)分析,很好地達(dá)到了欲期目的。在系統(tǒng)編程、器件、測(cè)試,工作效果很好。以下,介紹整個(gè)設(shè)計(jì)思想,供廣大同行參考。
接口系統(tǒng)模型簡(jiǎn)介
用CPLD做多軸運(yùn)動(dòng)控制卡的PCI接口,所構(gòu)成的板卡系統(tǒng)用圖1描述。
圖1 PCI-CPLD接口系統(tǒng)模型圖(略)
這里,CPLD/FPGA完成PCI主/從傳輸時(shí)序的邏輯構(gòu)成與變換,并直接對(duì)專(zhuān)用運(yùn)動(dòng)控制器件或TMS320C2400系列DSP進(jìn)行適當(dāng)操作。整個(gè)系統(tǒng)的設(shè)計(jì)中,CPLD使用PCI總線的33MHz時(shí)鐘,以簡(jiǎn)化PCI傳輸?shù)倪壿嬙O(shè)計(jì)。
總線傳輸時(shí)序分析
運(yùn)動(dòng)控制器件采用日本NOVA的MCX314專(zhuān)用器件。MCX314是一款能夠同時(shí)控制4個(gè)伺服馬達(dá)或步進(jìn)馬達(dá)的運(yùn)動(dòng)控制芯片,它以脈沖串形式輸出,能對(duì)伺服馬達(dá)和步進(jìn)馬達(dá)進(jìn)行位置控制、插補(bǔ)驅(qū)動(dòng)、速度控制等實(shí)時(shí)監(jiān)控。MCX314單獨(dú)使用16MHz晶振時(shí)鐘。通過(guò)MCX314進(jìn)行運(yùn)動(dòng)監(jiān)控,主要是下達(dá)命令,進(jìn)行運(yùn)動(dòng)狀態(tài)參數(shù)的讀取或運(yùn)動(dòng)參數(shù)的發(fā)送。在MCX314中,這些命令和參數(shù)對(duì)應(yīng)不同地址的寄存器,每個(gè)寄存器字寬16位,這些寄存器共用16個(gè)地址。對(duì)MCX314進(jìn)行寫(xiě)操作后,四個(gè)CLK周期內(nèi)不能再連續(xù)讀寫(xiě)操作,以使MCX314有足夠時(shí)間處理數(shù)據(jù),外部表現(xiàn)為MCX314的BUSY#線在WR#寫(xiě)信號(hào)的上升沿后二個(gè)SCLK周期期間保持低激活,SCLK芷謔荂LK的兩倍。下面圖2~4是MCX314的讀寫(xiě)時(shí)序圖。表1是圖2~4中標(biāo)示的時(shí)間要求范圍。
進(jìn)行PCI總線傳輸,至少需要40條信號(hào)接口,包括數(shù)據(jù)/地址線、接口控制線、仲裁、總線命令及系統(tǒng)線等。每次數(shù)據(jù)傳輸由一個(gè)地址脈沖和一個(gè)或幾個(gè)數(shù)據(jù)脈沖組成。傳輸一個(gè)地址和一個(gè)數(shù)據(jù)稱(chēng)為常規(guī)傳輸;傳輸一個(gè)地址和一批數(shù)據(jù)稱(chēng)為猝發(fā)傳輸。根據(jù)MCX314的使用特點(diǎn)和讀寫(xiě)時(shí)序,進(jìn)行PCI傳輸,適宜采用常規(guī)傳輸。PCI常規(guī)傳輸常用的控制信號(hào)是:幀同步信號(hào)FRAME#、主設(shè)備準(zhǔn)備好信號(hào)IRDY#、從設(shè)備準(zhǔn)備好信號(hào)TRDY#、從設(shè)備選通信號(hào)DEVSEL#、命令/字節(jié)信號(hào)C/BE#等。下面圖5~6是PCI常規(guī)傳輸?shù)牡湫蜁r(shí)序圖。
根據(jù)MCX314器件和PCI總線傳輸?shù)奶攸c(diǎn),采用16位數(shù)據(jù)總線使MCX314與PCI低端地址/數(shù)據(jù)線直接相連,可以有效地簡(jiǎn)化設(shè)計(jì)和硬件結(jié)構(gòu)。
⑴每次數(shù)據(jù)傳輸,主機(jī)通過(guò)PCI首先傳出地址和命令字,PCI接口邏輯要能從地址中確定是不是對(duì)本機(jī)的訪問(wèn),并鎖存地址;同時(shí)PCI接口邏輯還要能從命令字中識(shí)別訪問(wèn)是讀操作還是寫(xiě)操作。
⑵進(jìn)行讀寫(xiě)操作,PCI接口邏輯要向PCI總線產(chǎn)生適當(dāng)?shù)腡RDY#、DEVSEL#信號(hào),只有在IRDY#、TRDY#、DEVSEL#都為低狀態(tài)時(shí),PCI操作才能完成;同時(shí),PCI接口邏輯還需要向MCX314產(chǎn)生適當(dāng)?shù)钠xCS#、讀RD#或?qū)慦R#信號(hào)。
⑶對(duì)MCX314的讀操作,RD#信號(hào)的低有效時(shí)間要大于tRD的值29ns。
⑷對(duì)MCX314的寫(xiě)操作,要保證WR#信號(hào)的低有效脈寬tww不小于50ns,輸入數(shù)據(jù)的設(shè)定時(shí)間tDW不小于30ns,片選CS#與地址保持時(shí)間要不小于5ns。
⑸對(duì)MCX314寫(xiě)操作后,在邏輯設(shè)計(jì)上要保證至少8個(gè)PCI時(shí)鐘周期(33MHz)內(nèi)主機(jī)不再對(duì)它進(jìn)行讀寫(xiě)操作,以使MCX314有足夠時(shí)間處理數(shù)據(jù)。即要插入適當(dāng)時(shí)間的TRDY#信號(hào),以使主機(jī)能夠產(chǎn)生等待,不操作MCX314器件。
⑹片選CS#、讀RD#、寫(xiě)WR#有效期間,地址信號(hào)要始終有效并確定為某一值。
CPLD實(shí)現(xiàn)的狀態(tài)機(jī)構(gòu)設(shè)
狀態(tài)機(jī)的構(gòu)造
根據(jù)上述時(shí)序圖的分析,完成此特定PCI總線傳輸需要設(shè)計(jì)七個(gè)狀態(tài):狀態(tài)S0標(biāo)識(shí)PCI總線空閑時(shí)期;狀態(tài)S1標(biāo)識(shí)地址與總線命令識(shí)別階段;狀態(tài)S2、S4、S6、S7完成寫(xiě)操作及其寫(xiě)后的適當(dāng)?shù)却芷冢粻顟B(tài)S3、S5完成讀操作。
狀態(tài)功能的確定
設(shè)計(jì)各狀態(tài)執(zhí)行以下功能:
狀態(tài)S0~S1:對(duì)PCI總線,置高信號(hào)TRDY#、DEVSEL#;對(duì)MCX314,置高片選信號(hào)CS#、讀信號(hào)RD#、寫(xiě)信號(hào)WR#,地址呈現(xiàn)三態(tài)。在S1態(tài)還要完成:依據(jù)地址信號(hào)確定是不是對(duì)本機(jī)的選擇,并識(shí)別是不是讀或?qū)懖僮?,鎖存訪問(wèn)地址。
狀態(tài)S3、S5:對(duì)MCX314,產(chǎn)生低有效的片選信號(hào)CS#、讀信號(hào)RD#,并確定讀寫(xiě)訪問(wèn)的地址。在S5態(tài),對(duì)PCI總線,置低信號(hào)TRDY#、DEVSEL#,以完成PCI讀操作。
狀態(tài)S2、S4、S6、S7:對(duì)MCX314的片選信號(hào)CS#在S2態(tài)產(chǎn)生,在S4、S6態(tài)保持,進(jìn)入S7態(tài)結(jié)束;S2、S4態(tài)寫(xiě)信號(hào)WR#低有效;S6態(tài)產(chǎn)生8個(gè)PCI周期長(zhǎng)的等待時(shí)期;S7態(tài)置低信號(hào)TRDY#以結(jié)束PCI寫(xiě)操作;在S2、S4、S7態(tài),產(chǎn)生低有效的DEVSEL#。
狀態(tài)變化的確定
根據(jù)對(duì)PCI總線傳輸時(shí)序的分析,影響設(shè)想的各個(gè)狀態(tài)相互轉(zhuǎn)化的因素是:幀同步信號(hào)FRAME#、主設(shè)備準(zhǔn)備好信號(hào)IRDY#、對(duì)從設(shè)備的讀識(shí)別信號(hào)read_map、寫(xiě)識(shí)別信號(hào)write_map及其等待狀態(tài)計(jì)數(shù)器acc值。這里,用read_map、write_map標(biāo)識(shí)狀態(tài)S1產(chǎn)生的中間識(shí)別信號(hào)。
需要注意,在狀態(tài)S1要鎖存收到的地址,在狀態(tài)S6變化時(shí)要適時(shí)進(jìn)行時(shí)鐘周期計(jì)數(shù)。
還要注意,狀態(tài)機(jī)設(shè)計(jì)時(shí)產(chǎn)生的容錯(cuò)問(wèn)題,使非設(shè)計(jì)狀態(tài)能夠無(wú)條件回到空閑態(tài)S0。
狀態(tài)圖的規(guī)劃
綜上所述,設(shè)計(jì)規(guī)劃狀態(tài)圖如圖7所示。
VHDL語(yǔ)言的描述
設(shè)計(jì)使用四個(gè)進(jìn)程和幾個(gè)并行語(yǔ)句,實(shí)現(xiàn)整個(gè)CPLD的功能:一個(gè)進(jìn)程完成從設(shè)備及其讀寫(xiě)操作的識(shí)別;一個(gè)進(jìn)程完成操作地址的獲??;一個(gè)進(jìn)程完成寫(xiě)操作后等待態(tài)的插入;一個(gè)進(jìn)程完成狀態(tài)機(jī)的相互變化;幾個(gè)并行語(yǔ)句完成操作信號(hào)的產(chǎn)生。需要注意,各狀態(tài)里完成的功能要用并行語(yǔ)句實(shí)現(xiàn),不能再用進(jìn)程,否則就會(huì)引起邏輯綜合的麻煩,甚至根本不能綜合。整個(gè)程序如下:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY pci_itfc IS
PORT(clk, rst, frame, irdy: IN STD_LOGIC;
ad_high : IN STD_LOGIC_VECTOR(7 downto 4);
ad_low : IN STD_LOGIC_VECTOR(3 downto 1);
c_be: INSTD_LOGIC_VECTOR(3 downto 0);
trdy, devsel: OUT STD_LOGIC;
cs, rd, wr: OUT STD_LOGIC;
addr : OUT STD_LOGIC_VECTOR(2 downto 0));
END pci_itfc;
ARCHITECTURE behave OF pci_itfc IS
SIGNAL addr_map : STD_LOGIC_VECTOR(3 downto 1);
SIGNAL acc : STD_LOGIC_VECTOR(3 downto 0);
SIGNAL rd_map, wr_map : STD_LOGIC;
TYPE state_type IS (s0, s1, s2, s3, s4, s5, s6, s7);
SIGNAL state : state_type;
BEGIN
identify : PROCESS (clk) --讀、寫(xiě)、設(shè)備卡的識(shí)別
BEGIN
IF rising_edge(clk) THEN
IF c_be=X"6" AND ad_high=X"f" AND state=s1 THEN
rd_map<= '0';--讀
wr_map<= '1';
ELSIF c_be=X"7" AND ad_high=X"f" AND state=s1 THEN
rd_map<= '1';--寫(xiě)
wr_map<= '0';
ELSIF state=s0 THEN
rd_map<= '1';
wr_map <= '1';
END IF;
END IF;
END PROCESS;
addr_capture : PROCESS (clk) --操作地址的獲取
BEGIN
IF rising_edge(clk) THEN
IF state=s1 THEN addr_map<=ad_low;
END IF;
END IF;
END PROCESS;
delay_count : PROCESS (clk)--寫(xiě)遲延的增加
BEGIN
IF rising_edge(clk) THEN
IF state=s0 THEN acc <= "0000";
ELSIF state=s6 THEN acc <= acc + 1;
END IF;
END IF;
END PROCESS;
--操作信號(hào)的產(chǎn)生
addr <= "ZZZ" WHEN state = s0 OR state = s7 ELSE
addr_map;
trdy <= '0' WHEN state=s5 OR state=s7 ELSE
'1';
devsel<='0' WHEN state=s2 OR state=s4 OR state=s5
OR state = s6 OR state = s7 ELSE '1';
cs <= '1' WHEN state=s0 OR state=s1 OR state=s7 ELSE
'0';
rd <= '0' WHEN state=s3 OR state=s5 ELSE
'1';
wr <= '0' WHEN state=s2 OR state=s4 ELSE
'1';
state_change : PROCESS (clk, rst)--狀態(tài)機(jī)的變化
BEGIN
IF rst='0' THEN state <= s0;
ELSIF falling_edge(clk) THEN
CASE state IS
WHEN s0 =>
IF frame='0' AND irdy='1' THEN state <= s1;
ELSE state <= s0;
END IF;
WHEN s1 =>
IF rd_map ='0' THEN state<=s3;
ELSIF wr_map ='0' THEN state<=s2;
ELSE state <= s0;
END IF;
WHEN s2 =>
IF frame='1' AND irdy='0' THEN state <= s4;
ELSE state <= s0;
END IF;
WHEN s3 =>
IF frame='1' AND irdy='0' THEN state <= s5;
ELSE state <= s0;
END IF;
WHEN s4 =>
IF frame='1' AND irdy='0' THEN state <= s6;
ELSE state <= s0;
END IF;
WHEN s5 => state <= s0;
WHEN s6 =>
IF frame='1' AND irdy='1' THEN state <= s0;
ELSIF acc=X"8" THEN state <= s7;
ELSE state <= s6;
END IF;
WHEN s7 => state <= s0;
WHEN OTHERS => state <= s0;
END CASE;
END IF;
END PROCESS state_change;
END behave;
MaxPlusII的驗(yàn)證
設(shè)計(jì)CPLD,使用軟件MaxPlusII進(jìn)行邏輯綜合、功能模擬與定時(shí)分析,選用Altera的Max7000系列的在系統(tǒng)可編程器件EPM7032STC44-10。下面是讀寫(xiě)訪問(wèn)的仿真波形圖:
圖中,時(shí)鐘周期為30ns。讀操作,RD#信號(hào)的低有效時(shí)間為60ns,大于tRD的值29ns;讀信號(hào)無(wú)效后地址穩(wěn)定時(shí)間為15ns,在此時(shí)間內(nèi)結(jié)束讀操作。寫(xiě)操作,WR#信號(hào)的低有效脈寬60ns,大于要求值50ns,輸入數(shù)據(jù)設(shè)定;寫(xiě)信號(hào)結(jié)束后插入8個(gè)PCI時(shí)鐘周期,相當(dāng)于4個(gè)MCX314時(shí)鐘周期,此間,主機(jī)不能操作MCX314,MCX314有足夠時(shí)間處理寫(xiě)入數(shù)據(jù);片選CS#與地址保持時(shí)間都遠(yuǎn)遠(yuǎn)大于要求值5ns。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識(shí)介紹2025/8/29 16:58:56
- SQL核心知識(shí)點(diǎn)總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹(shù)莓派?一文快速了解樹(shù)莓派基礎(chǔ)知識(shí)2025/6/18 16:30:52
- 編碼器的工作原理及作用1
- 超強(qiáng)整理!PCB設(shè)計(jì)之電流與線寬的關(guān)系2
- 三星(SAMSUNG)貼片電容規(guī)格對(duì)照表3
- 電腦藍(lán)屏代碼大全4
- 國(guó)標(biāo)委發(fā)布《電動(dòng)汽車(chē)安全要求第3部分:人員觸電防護(hù)》第1號(hào)修改單5
- 通俗易懂談上拉電阻與下拉電阻6
- 繼電器的工作原理以及驅(qū)動(dòng)電路7
- 電容單位8
- 跟我學(xué)51單片機(jī)(三):?jiǎn)纹瑱C(jī)串口通信實(shí)例9
- 一種三極管開(kāi)關(guān)電路設(shè)計(jì)10
- PCB埋盲孔設(shè)計(jì)與工藝適配核心技術(shù)規(guī)范
- 如何提高M(jìn)OSFET在惡劣環(huán)境下的可靠性?
- 繼電器觸點(diǎn)壽命及可靠性分析
- 可重構(gòu)濾波器技術(shù):滿足多標(biāo)準(zhǔn)通信系統(tǒng)的靈活需求
- 磁集成技術(shù)在小型化電源設(shè)計(jì)中的應(yīng)用
- 微帶線阻抗匹配設(shè)計(jì)與實(shí)操調(diào)試技巧
- 從S參數(shù)到實(shí)際元件:微帶線濾波器的設(shè)計(jì)與仿真流程
- IP67/IP68連接器設(shè)計(jì)解析
- 電源管理IC失效的常見(jiàn)原因
- MOSFET體二極管特性分析









