劉 杰,臧 煒,梁曉鵬,李軍武
(1.貴州航天凱山石油儀器有限公司,貴陽 550000; 2.中國石油渤海裝備公司第一機(jī)械廠,河北 青縣 062650; 3.長慶油田第六采油廠,陜西 榆林 718600; 4.長慶油田第七采油廠,甘肅 環(huán)縣 745700)
一種新型的FPGA實(shí)現(xiàn)RS422串口通信方法
劉 杰1,臧 煒2,梁曉鵬3,李軍武4
(1.貴州航天凱山石油儀器有限公司,貴陽 550000; 2.中國石油渤海裝備公司第一機(jī)械廠,河北 青縣 062650; 3.長慶油田第六采油廠,陜西 榆林 718600; 4.長慶油田第七采油廠,甘肅 環(huán)縣 745700)
在FPGA實(shí)現(xiàn)RS422串口通信的常用方法中經(jīng)常遇到諸多問題,如FIFO深度讀取不正確、FIFO寫數(shù)據(jù)端口與讀數(shù)據(jù)端口時(shí)序競爭、多個(gè)模塊間信號(hào)延時(shí)導(dǎo)致FPGA亞穩(wěn)態(tài)等問題,因此設(shè)計(jì)了一種新型的RS422串口通信實(shí)現(xiàn)方法;該方法通過利用寄存器數(shù)組作為循環(huán)緩存代替FIFO,利用計(jì)數(shù)器代替?zhèn)鹘y(tǒng)的波特率產(chǎn)生模塊,把常用方法中的多個(gè)模塊整合成一個(gè)模塊,只采用一個(gè)主時(shí)鐘,所有寄存器的時(shí)鐘輸入端共享一個(gè)時(shí)鐘,對(duì)FPGA邏輯與時(shí)序進(jìn)行了有效約束,避免了FPGA中亞穩(wěn)態(tài)產(chǎn)生;試驗(yàn)結(jié)果表明該方法實(shí)現(xiàn)的RS422串口通信高速、可靠、穩(wěn)定,并且利用FPGA實(shí)現(xiàn)RS422串口通信,可使整個(gè)系統(tǒng)更為靈活、緊湊,減小整個(gè)電路的體積,提高系統(tǒng)的可靠性和穩(wěn)定性。
RS422;FPGA;DSP;Verilog HDL
目前,嵌入式電子系統(tǒng)設(shè)計(jì)多采用DSP+FPGA架構(gòu),因?yàn)槠浼骖櫫薉SP和FPGA的優(yōu)點(diǎn)。DSP的優(yōu)點(diǎn)是能夠?qū)崿F(xiàn)復(fù)雜的算法結(jié)構(gòu),運(yùn)算速度高、尋址方式靈活等,適合于運(yùn)算能力和存儲(chǔ)容量有較高要求的應(yīng)用場合[1]。FPGA的優(yōu)點(diǎn)是基于可編程邏輯器件進(jìn)行數(shù)字邏輯設(shè)計(jì),性能穩(wěn)定、易于維護(hù)、性價(jià)比高、產(chǎn)品體積小、信號(hào)間干擾小、研制周期短等,并發(fā)處理能力強(qiáng),可以作為DSP的各種外圍電路的控制器。因此,采用DSP和FPGA數(shù)字信號(hào)處理系統(tǒng)可以把兩者的優(yōu)點(diǎn)結(jié)合起來,兼顧速度和靈活性,優(yōu)勢(shì)互補(bǔ),符合當(dāng)前軟硬件融合協(xié)調(diào)工作的趨勢(shì)。
RS422 串口通信在航空航天及工業(yè)控制領(lǐng)域有著廣泛的應(yīng)用,其特點(diǎn)是點(diǎn)對(duì)點(diǎn)通信、傳輸距離長、抗干擾能力強(qiáng)、傳輸速率高等方面。利用FPGA實(shí)現(xiàn)RS422串口通信,可使整個(gè)系統(tǒng)更為靈活、緊湊,減小整個(gè)電路的體積,提高系統(tǒng)的可靠性和穩(wěn)定性。
本文首先介紹了一種FPGA實(shí)現(xiàn)RS422串口通信的常用方法,然后設(shè)計(jì)并實(shí)現(xiàn)了一種改進(jìn)方法,在改進(jìn)方法中采用寄存器數(shù)組作為循環(huán)緩存代替FIFO,利用計(jì)數(shù)器代替波特率產(chǎn)生模塊,把常用方法中的四個(gè)模塊進(jìn)行整合,采用同步時(shí)鐘代替異步時(shí)鐘,對(duì)FPGA邏輯與時(shí)序進(jìn)行了有效約束,避免了FPGA中亞穩(wěn)態(tài)產(chǎn)生,提高了RS422串口通信的可靠性、穩(wěn)定性。
RS422串口通信的幀格式如圖1所示。

圖1 RS422串口通信幀格式
一幀數(shù)據(jù)包括起始位、數(shù)據(jù)位、校驗(yàn)位和停止位。線路空閑時(shí),傳輸線路保持高電平。當(dāng)發(fā)送數(shù)據(jù)時(shí),發(fā)送節(jié)點(diǎn)要先發(fā)一個(gè)低電平的起始位,表示一幀數(shù)據(jù)的開始,然后發(fā)送有效數(shù)據(jù)位,通常為8個(gè)比特,然后發(fā)送奇偶校驗(yàn)位,最后發(fā)送停止位,停止位為高電平,表示一幀數(shù)據(jù)發(fā)送結(jié)束。
串口通信結(jié)構(gòu)框圖如圖2所示。

圖2 串口通信結(jié)構(gòu)框圖
DSP與FPGA之間的通信方式采用DSP的EMIF方式,即地址總線、數(shù)據(jù)總線和控制總線。FPGA內(nèi)部實(shí)現(xiàn)RS422通信功能,主要包括接收模塊、發(fā)送模塊、波特率產(chǎn)生模塊、DSP接口控制模塊等4個(gè)部分。RS422串口通信外設(shè)一般是指RS422收發(fā)芯片,如MAX3087,完成TLL電平和RS422差分電平之間的轉(zhuǎn)換,通常與FPGA相連時(shí)要經(jīng)過數(shù)字隔離器,進(jìn)行地線隔離。
串口接收模塊的功能為:FPGA首先檢測數(shù)據(jù)的起始位,然后獲得有效數(shù)據(jù)位的信息,并且對(duì)有效數(shù)據(jù)位進(jìn)行奇偶校驗(yàn)后,進(jìn)行串/并轉(zhuǎn)換,存入串口接收FIFO中,等待DSP進(jìn)行查詢讀取,當(dāng)DSP讀串口接收FIFO地址時(shí),F(xiàn)PGA把串口接收FIFO中的數(shù)據(jù)放到數(shù)據(jù)總線上。
串口發(fā)送模塊的功能為:首先DSP通過EMIF接口向FPGA的串口發(fā)送FIFO寫數(shù)據(jù),F(xiàn)PGA把數(shù)據(jù)存入串口發(fā)送FIFO中,進(jìn)行并/串轉(zhuǎn)換,將串行數(shù)據(jù)從輸出端口按照約定的波特率輸出。
波特率產(chǎn)生模塊的功能:一般通過FPGA內(nèi)部的PLL鎖相環(huán)以及分頻模塊,獲得串口發(fā)送模塊波特率時(shí)鐘驅(qū)動(dòng)串口發(fā)送模塊,獲得串口接收模塊16倍頻波特率時(shí)鐘驅(qū)動(dòng)串口接收模塊。
DSP接口控制模塊具體功能為:根據(jù)DSP接口的讀信號(hào)、寫信號(hào)、片選信號(hào)以及地址信號(hào)產(chǎn)生相應(yīng)的接收FIFO讀信號(hào)、發(fā)送FIFO寫信號(hào)、以及讀取接收FIFO深度等功能。
在常用方法中,數(shù)據(jù)緩存操作通常采用FPGA生產(chǎn)商免費(fèi)提供的FIFO軟核,是一種采用環(huán)形存儲(chǔ)結(jié)構(gòu)的先進(jìn)先出存儲(chǔ)器[2]。FIFO結(jié)構(gòu)如圖3所示。

圖3 異步FIFO結(jié)構(gòu)圖
圖3中,F(xiàn)IFO的存儲(chǔ)介質(zhì)為一個(gè)雙端口RAM,可以同時(shí)進(jìn)行讀寫操作。左側(cè)為一個(gè)寫時(shí)鐘域,由寫地址邏輯產(chǎn)生寫控制信號(hào)和寫地址,可以把數(shù)據(jù)寫入RAM;右側(cè)為一個(gè)讀時(shí)鐘域,由讀地址邏輯產(chǎn)生讀控制信號(hào)和讀地址,可以讀出RAM中的數(shù)據(jù)。另外,由空/滿標(biāo)志位產(chǎn)生邏輯對(duì)讀寫地址相互比較產(chǎn)生空、滿標(biāo)志位以及動(dòng)態(tài)刷新FIFO的深度,該模塊需要和讀時(shí)鐘域、寫時(shí)鐘域進(jìn)行交互,存在跨時(shí)鐘域的問題。
綜上所述,常用方法是基于FPGA內(nèi)部FIFO建立串口通信模塊,在工程應(yīng)用中,經(jīng)常遇到諸多問題,如FIFO深度讀取不正確、FIFO寫數(shù)據(jù)端口與讀數(shù)據(jù)端口時(shí)序競爭、多個(gè)模塊間信號(hào)延時(shí)導(dǎo)致FPGA亞穩(wěn)態(tài)等問題。究其原因是由于FIFO軟核由廠家封裝后,對(duì)用戶開發(fā)是一個(gè)“黑盒子”,其內(nèi)部設(shè)計(jì)無法被用戶優(yōu)化[3]。因此在改進(jìn)方法中,設(shè)計(jì)循環(huán)緩存代替了FIFO,利用計(jì)數(shù)器代替了波特率產(chǎn)生模塊,可以把串口發(fā)送模塊整合成一個(gè)模塊,把串口接收模塊整合成一個(gè)模塊,并且兩個(gè)模塊只采用一個(gè)主時(shí)鐘,采用同步時(shí)序電路設(shè)計(jì)的FPGA,所有寄存器的時(shí)鐘輸入端共享一個(gè)時(shí)鐘,可以有效地消除亞穩(wěn)態(tài)。
2.1 利用寄存器數(shù)組作為循環(huán)緩存代替FIFO
定義一個(gè)寄存器數(shù)組[4]:reg[7:0] data_HC[511:0],數(shù)據(jù)寬度為8位,長度為512。
定義一個(gè)讀指針計(jì)數(shù)器:reg[8:0] REcount = 9’h000,計(jì)數(shù)范圍為[0~511]。
定義一個(gè)寫指針計(jì)數(shù)器:reg[8:0] WEcount = 9’h000,計(jì)數(shù)范圍為[0~511]。
如圖4所示,采用一個(gè)主時(shí)鐘對(duì)循環(huán)緩存data_HC進(jìn)行讀、寫操作,當(dāng)向循環(huán)緩存data_HC寫入數(shù)據(jù)后,寫指針WEcount加1;當(dāng)從循環(huán)緩存data_HC讀出數(shù)據(jù)后,讀指針REcount加1。當(dāng)讀、寫指針遞增到511后,再加1則自動(dòng)為0,依次循環(huán)。循環(huán)緩存還需要建立3個(gè)關(guān)鍵的變量。

圖4 循環(huán)緩存data_HC示意圖
循環(huán)緩存的深度:wire [8:0] cnt;
循環(huán)緩存的滿標(biāo)志:wire FULL;
循環(huán)緩存的空標(biāo)志:wire EMPTY;
深度cnt即循環(huán)緩存data_HC中數(shù)據(jù)的個(gè)數(shù),利用寫指針WEcount與讀指針Recount比較,當(dāng)WEcount >= Recount時(shí),cnt = WEcount -Recount。當(dāng)WEcount < Recount時(shí),cnt = WEcount +512 -Recount。利用邏輯電路表達(dá)式為:
assign cnt = (WEcount >= Recount)?( WEcount -Recount):( WEcount +512 -Recount)。
空、滿標(biāo)志產(chǎn)生的原則是:寫滿而不溢出,讀空而不多讀。即在滿信號(hào)有效時(shí)若繼續(xù)向FIFO寫數(shù)據(jù),應(yīng)根據(jù)設(shè)計(jì)的要求對(duì)數(shù)據(jù)作保持或拋棄重發(fā)處理,空標(biāo)志的產(chǎn)生也是如此。
當(dāng)深度cnt=0時(shí),設(shè)置空標(biāo)志EMPTY=1。當(dāng)深度cnt=256時(shí),設(shè)置滿標(biāo)志FULL=1。當(dāng)然,滿標(biāo)志FULL的深度cnt數(shù)值可以靈活設(shè)置。利用邏輯電路表達(dá)式為[3]:
assign EMPTY = (cnt === 9’d0)?1:0;
assign FULL = (cnt ===9’d256)?1:0;
當(dāng)向循環(huán)緩存data_HC寫入數(shù)據(jù)時(shí),代碼示例如下:
if(~FULL)
begin
data_HC[WEcount] <= data_in;
WEcount <= WEcount + 1;
end
當(dāng)從循環(huán)緩存data_HC讀出數(shù)據(jù)時(shí),代碼示例如下:
if(~EMPTY)
begin
data_out <= data_HC[REcount];
REcount <= Recount + 1;
end
2.2 利用計(jì)數(shù)器代替波特率產(chǎn)生模塊
串口發(fā)送模塊的時(shí)鐘一般和串口發(fā)送波特率一致,當(dāng)發(fā)送數(shù)據(jù)時(shí),只需要按照時(shí)鐘把循環(huán)緩存中的數(shù)據(jù)并/串轉(zhuǎn)換后,按幀格式發(fā)送。
串口接收模塊的時(shí)鐘一般是串口接收波特率的16倍頻。當(dāng)接收數(shù)據(jù)時(shí),由于接收節(jié)點(diǎn)和發(fā)送節(jié)點(diǎn)的時(shí)鐘異步,所以需要對(duì)數(shù)據(jù)位進(jìn)行多次采樣,采樣次數(shù)越多,采樣點(diǎn)就可以越靠近數(shù)據(jù)位中點(diǎn),降低采樣錯(cuò)誤的概率。但是,采樣次數(shù)越多,其系統(tǒng)開銷就越大。因此,設(shè)計(jì)串口接收模塊的時(shí)鐘是串口接收波特率的16倍頻,每個(gè)數(shù)據(jù)位可以采樣16次,并且只取靠近中間的3個(gè)采樣點(diǎn),如第7、8、9次,并且對(duì)3次的采樣點(diǎn)值,通過3判2進(jìn)行裁決,進(jìn)一步降低采樣誤碼概率。
上述方法中,需要通過FPGA的主時(shí)鐘經(jīng)過PLL鎖相環(huán)和分頻模塊產(chǎn)生串口發(fā)送時(shí)鐘和串口接收時(shí)鐘,分別驅(qū)動(dòng)串口發(fā)送模塊和串口接收模塊。利用計(jì)數(shù)器完全可以替代波特率產(chǎn)生模塊,其優(yōu)點(diǎn)是只需要FPGA的主時(shí)鐘,而不進(jìn)行分頻,其時(shí)鐘相位、延時(shí)都不會(huì)由于分頻而產(chǎn)生變化。
例如,RS422串口全雙工通信,收、發(fā)波特率都為38400bpt/s,F(xiàn)PGA中模塊主時(shí)鐘用14.745 6 MHz。在串口發(fā)送模塊,以14.745 6 MHz時(shí)鐘的上升沿為觸發(fā)模式進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)到384時(shí),進(jìn)入圖5串口發(fā)送模塊狀態(tài)機(jī),根據(jù)狀態(tài)機(jī)執(zhí)行相應(yīng)的動(dòng)作,并且計(jì)數(shù)重新置1,主時(shí)鐘下一個(gè)上升沿來時(shí),繼續(xù)進(jìn)行計(jì)數(shù)動(dòng)作。在串口接收模塊,以14.745 6 MHz時(shí)鐘的上升沿為觸發(fā)模式進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)到24時(shí),進(jìn)入圖6串口接收模塊狀態(tài)機(jī),根據(jù)狀態(tài)機(jī)執(zhí)行相應(yīng)的動(dòng)作,并且計(jì)數(shù)重新置1,主時(shí)鐘下一個(gè)上升沿來時(shí),繼續(xù)進(jìn)行計(jì)數(shù)動(dòng)作。
2.3 發(fā)送模塊設(shè)計(jì)
DSP向數(shù)據(jù)緩存data_HC寫數(shù)據(jù),F(xiàn)PGA檢測到DSP的串口寫信號(hào)有效,并且數(shù)據(jù)緩存未滿,把DSP數(shù)據(jù)總線上的數(shù)據(jù)裝入數(shù)據(jù)緩存data_HC[WEcount],并且WEcount寫指針加1。FPGA中串口發(fā)送模塊,以主時(shí)鐘上升沿進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)到分頻時(shí)鐘的值(BAND=主時(shí)鐘頻率/發(fā)送數(shù)據(jù)波特率)時(shí),進(jìn)行狀態(tài)機(jī)判斷和跳轉(zhuǎn),并且計(jì)數(shù)值重新置1,過程如圖5所示。
發(fā)送模塊狀態(tài)機(jī)設(shè)計(jì)如下:狀態(tài)1檢測循環(huán)緩存data_HC是否為空,如果循環(huán)緩存data_HC非空,讀取data_HC[REcount]值(1個(gè)字節(jié)),REcount讀指針加1,跳轉(zhuǎn)到狀態(tài)2,然后依次從狀態(tài)2~狀態(tài)12跳轉(zhuǎn),其狀態(tài)為發(fā)送起始位、數(shù)據(jù)位0~數(shù)據(jù)位7,奇偶校驗(yàn)位、停止位。

圖5 發(fā)送模塊設(shè)計(jì)示意圖
2.4 接收模塊設(shè)計(jì)
FPGA中串口接收模塊,以主時(shí)鐘上升沿進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)到分頻時(shí)鐘的值(BAND=主時(shí)鐘頻率/(接收數(shù)據(jù)波特率*16倍頻))時(shí),進(jìn)行狀態(tài)機(jī)判斷和跳轉(zhuǎn),并且計(jì)數(shù)值重新置1,過程如圖6所示。

圖6 接收模塊設(shè)計(jì)示意圖
接收模塊狀態(tài)機(jī)設(shè)計(jì)如下:狀態(tài)1檢測數(shù)據(jù)線是否有起始位,如果檢測到起始位,跳轉(zhuǎn)到狀態(tài)2,狀態(tài)2為檢測到起始位的中間位置,然后依次從狀態(tài)3~狀態(tài)11跳轉(zhuǎn),其狀態(tài)為數(shù)據(jù)位0~數(shù)據(jù)位7,奇偶校驗(yàn)位的中間位置采樣,最后跳轉(zhuǎn)到狀態(tài)12,停止位的中間位置,對(duì)數(shù)據(jù)進(jìn)行奇偶校驗(yàn),以及判斷data_HC是否滿,如果未滿,把數(shù)據(jù)寫入數(shù)據(jù)緩存data_HC[WEcount],并且WEcount寫指針加1。
DSP可以讀取與FPGA約定的兩個(gè)地址,一個(gè)為數(shù)據(jù)緩存深度地址[4],如addr_data_count,另一個(gè)為數(shù)據(jù)緩存中數(shù)據(jù)地址,如addr_data。當(dāng)DSP讀取數(shù)據(jù)緩存深度地址時(shí),F(xiàn)PGA可以把數(shù)據(jù)緩存深度cnt鎖存后放到DSP數(shù)據(jù)線上。當(dāng)DSP讀取數(shù)據(jù)緩存中數(shù)據(jù)地址時(shí),F(xiàn)PGA判斷數(shù)據(jù)緩存data_HC非空后,把data_HC[REcount]鎖存后放到數(shù)據(jù)線上,并且讀指針REcount加1。
在XXX組合導(dǎo)航系統(tǒng)中,F(xiàn)PGA硬件采用A3P1000,DSP采用TI公司的TMS320C6713B,產(chǎn)品包含與陀螺、上位機(jī)、轉(zhuǎn)位機(jī)構(gòu)、北斗系統(tǒng)等進(jìn)行RS422串口通信的11個(gè)接收、發(fā)送模塊。采用改進(jìn)方法后,在測試過程中,常溫條件下,產(chǎn)品連續(xù)工作100多個(gè)小時(shí),未出現(xiàn)串口通信錯(cuò)誤。在高溫、低溫條件下,分別進(jìn)行1小時(shí)測試,未出現(xiàn)任何通信異常現(xiàn)象,也沒有出現(xiàn)誤碼現(xiàn)象。
在常用方法中,如圖2所示,多個(gè)模塊間需要傳遞時(shí)鐘、數(shù)據(jù)、FIFO控制信號(hào)等,系統(tǒng)很容易產(chǎn)生亞穩(wěn)態(tài)。亞穩(wěn)態(tài)就是觸發(fā)器工作在一種不確定的狀態(tài),這種不確定的狀態(tài)將會(huì)影響到下一級(jí)觸發(fā)器,最終導(dǎo)致連鎖反應(yīng),從而使整個(gè)系統(tǒng)功能失常。當(dāng)信號(hào)在異步電路中或多個(gè)時(shí)鐘域之間傳輸時(shí),容易產(chǎn)生亞穩(wěn)態(tài)現(xiàn)象。在改進(jìn)方法中,通過模塊整合,只采用一個(gè)主時(shí)鐘,所有寄存器時(shí)鐘輸入端共享一個(gè)時(shí)鐘,有效避免了系統(tǒng)亞穩(wěn)態(tài)的產(chǎn)生。
本文首先介紹了一種FPGA實(shí)現(xiàn)RS422串口通信的常用方法,包括波特率產(chǎn)生、串口發(fā)送、串口接收、FPGA的FIFO軟核等模塊,然后設(shè)計(jì)并實(shí)現(xiàn)了一種改進(jìn)方法。在改進(jìn)方法中由于設(shè)計(jì)了循環(huán)緩存代替了FIFO,利用計(jì)數(shù)器代替了波特率產(chǎn)生模塊,因此,可以把串口發(fā)送模塊整合成一個(gè)模塊,把串口接收模塊整合成一個(gè)模塊,并且串口發(fā)送模塊、串口接收模塊只采用一個(gè)主時(shí)鐘,采用同步時(shí)序電路設(shè)計(jì)的FPGA,所有寄存器的時(shí)鐘輸入端共享一個(gè)時(shí)鐘,可以有效地消除亞穩(wěn)態(tài),提高了RS422串口通信的可靠性、穩(wěn)定性,具有較高的應(yīng)用推廣價(jià)值。
[1] 三恒星科技. TMS320C6713 DSP原理與應(yīng)用實(shí)例[M] .北京:電子工業(yè)出版社,2012.
[2] ProASIC 3 Flash Family FPGAs 使用手冊(cè)[Z]. 北京:ACTEL公司,2013.
[3] 夏宇聞. Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M] . 北京:北京航空航天大學(xué)出版社,2013.
[4] FT-C6713J/250軍用DSP產(chǎn)品使用手冊(cè)[Z]. 北京:國防科學(xué)技術(shù)大學(xué),2012.
A New Method of RS422 Serial Port Communication Based on FPGA
Liu Jie1,Zang Wei2,Liang Xiaopeng3,Li Junwu4
(1.Guizhou Aerospace Kai Shan Petroleum Instrument Co., Ltd.,Guiyang 550000, China;2.1STMachinery Works of CNPC BOHAI Equipment Manufacturing Co., Ltd., Qingxian 062650, China;3.6STOil Production Plant of Changqing Oilfield, Yulin 718600, China;4.7STOil Production Plant of Changqing Oilfield, Huanxian 745700, China)
The common method of RS422 serial port communication realized by FPGA often encounter many problems, such as FIFO depth is incorrect, the timing of writing FIFO data port and reading FIFO data port are compete, and signal delay between multiple modules leads to FPGA metastable state, so a new method of RS422 serial port communication is proposed. This method replaces the traditional FIFO by using register array as a cyclic queue, uses the counter instead of the baud rate generation module, integrate multiple modules into one module, only one master clock, all registers share one clock with the clock input, and constraints FPGA logic and timing to avoid the FPGA metastable state. The experimental results show that the method is fast, reliable and stable. It can make the whole system more flexible and compact, reduce the whole circuit volume and improve the reliability and stability of the system.
RS422;FPGA;DSP;Verilog HDL
2016-12-12;
2017-02-06。
劉 杰(1984-),女,山東單縣人,碩士研究生,工程師,主要從事電路、軟件方向的研究。
1671-4598(2017)03-0191-04
10.16526/j.cnki.11-4762/tp.2017.03.052
TP3
A