頂層模塊:完成下層各個模塊信號連接,根據(jù)不同的地址處理好數(shù)據(jù)和標(biāo)志傳送,收發(fā)器的選擇等問題。
吳霞,女,碩士,研究方向:單片機及信息處理. 張多英,男,碩士,副教授,研究方向 :信號和信息處理
中斷管理模塊:儲存并管理各個收發(fā)器模塊的標(biāo)志位,如果某收發(fā)器有中斷請求則定時向單片機發(fā)出中斷信號。收發(fā)器模塊:完成數(shù)據(jù)格式的轉(zhuǎn)換及數(shù)據(jù)的接收和發(fā)送,對接收到的數(shù)據(jù)進行緩存,最多可以緩存 8個字節(jié)的數(shù)據(jù)。地址寄存器模塊:在地址鎖存允許位下降沿時將地址保存起來。此模塊已放到頂層模塊里[2]。
2.2 芯片與單片機連接
芯片設(shè)計的目的是為拓展單片機串口,所以如何與單片機聯(lián)合工作顯得至關(guān)重要。圖 2a是連接的示意圖(右邊為所設(shè)計的芯片,只標(biāo)明了跟單片機相連的引腳及一個收發(fā)器模塊的輸入輸出引腳)。
500)this.style.width=500;" border="0" />
500)this.style.width=500;" border="0" />
本設(shè)計芯片與單片機的硬件連接比較簡單,其中,并行數(shù)據(jù)端口 d_inout跟單片機 p0口相連,接收單片機發(fā)出的低 8位地址, ale與單片機地址鎖存允許信號引腳相連,odd_check為奇偶校驗結(jié)果輸出引腳,連接由使用者決定。3 模塊設(shè)計
3.1 頂層模塊頂層模塊在各模塊設(shè)計之前作為統(tǒng)籌規(guī)劃整個程序,是設(shè)計過程中再繼續(xù)完善和修正的重要部分。在頂層模塊里根據(jù)不同的地址輸入,選擇標(biāo)志或者數(shù)據(jù)的傳送。為了更好地將兩次操作區(qū)分開來使編程更加容易,論文中還設(shè)計了一個標(biāo)志寄存器rd_check_counter,在不同的操作來時,它的值不同。
3.2中斷控制模塊
中斷控制模塊要完成置標(biāo)志位,定時輸出中斷信號和向單片機傳送標(biāo)志位信息等功能。模塊接收端有中斷請求到來,中斷控制模塊即將相應(yīng)收發(fā)器的標(biāo)志位置 1,在數(shù)據(jù)被讀取之后,又立刻將標(biāo)志位清 0 [3]。
3.3收發(fā)器模塊收發(fā)器模塊結(jié)構(gòu)圖如圖 2b。在接收方面,收發(fā)器模塊實現(xiàn)接收數(shù)據(jù),并將數(shù)據(jù)串轉(zhuǎn)并,儲存到寄存器里等待單片機的讀取。在發(fā)送方面,收發(fā)器將單片機數(shù)據(jù)總線送過來的并行數(shù)據(jù)串行輸出[4]。
數(shù)據(jù)接收時數(shù)據(jù)經(jīng)過格式轉(zhuǎn)換后便被放入 8字節(jié)的緩存里面,該緩存在每次數(shù)據(jù)存入后就啟動計數(shù)器,當(dāng)過一段時間還沒有新的數(shù)據(jù)存入時,收發(fā)器即可以向中斷控制模塊提出中斷請求并且等待單片機對數(shù)據(jù)的讀取。發(fā)送數(shù)據(jù)時,收發(fā)器接收到單片機送來的數(shù)據(jù)并將其存儲起來,在串行數(shù)據(jù)發(fā)送設(shè)備準(zhǔn)備好的情況(txrdy為 1)下再進行格式轉(zhuǎn)換并發(fā)送,無論接收還是發(fā)送串行數(shù)據(jù)都是通過外部時鐘進行計數(shù)控制的[5]。
3.4地址寄存器模塊 .
地址鎖存模塊在 ale信號(單片機地址鎖存允許信號)到來時將地址低 8位鎖存起來,并送給中斷控制和上層模塊使用[6]。
3.5芯片端口
上述幾個模塊合成后的芯片外觀及其端口特征描述如下圖 3所示: 1、set_mode(0,1):兩位信號輸入引腳,用于模式的選擇,模式 1和模式 2分別用 01和 10來選擇。2、ale:地址鎖存允許信號輸入引腳,與單片機的 ale相連,在 ale下降沿的時候?qū)⒌刂返?8位鎖存到地址鎖存模塊。3、clk:時鐘信號輸入引腳,時鐘的頻率定為串行數(shù)據(jù)傳輸頻率的 4倍,如串行通信的波特率是
9600bps,則 clk的頻率是 9600×4=38400Hz。
4、cs:芯片總片選信號輸入引腳,低電平有效。
5、rd,wr:單片機向芯片讀寫的控制引腳,低電平有效。
6、rxd1,rxd2,rxd3,rxd4:串行輸入引腳。
7、INT0:中斷信號輸出引腳,下降沿有效。
8、odd_check1_o,odd_check2_o,odd_check3_o,odd_check4_o:送給單片機的奇偶校驗標(biāo)志信號輸出引腳。
9、rdfull:數(shù)據(jù)緩沖器標(biāo)志信號輸出引腳,該信號用‘1’和‘0’表明是否有收發(fā)器的緩存了數(shù)據(jù)尚未被提取。
10、rdrdy1,rdrdy2,rdrdy3,rdrdy4:引腳分別用于表明各個收發(fā)器是否正忙,從該收發(fā)器開始接收數(shù)據(jù)到數(shù)據(jù)被單片機讀取整個過程,其相應(yīng)的rdrdy引腳輸出‘1’。
11、txd1,txd2,txd3,txd4:串行數(shù)據(jù)輸出引腳。
12、tdempty:該引腳輸出為‘1’時表明芯片已沒有正在發(fā)送或者是將要發(fā)送的數(shù)據(jù)。
13、txrdy1,txrdy2,txrdy3,txrdy4:分別為收發(fā)器 1、2、3和 4可否進行發(fā)送控制輸入端,輸入為‘1’表示可以進行串行數(shù)據(jù)的發(fā)送。
14、d_inout(7:0):雙向數(shù)據(jù)總線。應(yīng)與單片機 p0口相連。
15、addr_h(7:0):地址高 8位。
4程序的綜合及仿真
4.1 設(shè)計綜合及實現(xiàn)
本設(shè)計綜合使用的工具是 Xilinx公司的 XST,它是內(nèi)嵌在 ISE7.2i里面的。綜合過程將把軟件設(shè)計的 HDL描述與硬件結(jié)構(gòu)掛鉤,是將軟件轉(zhuǎn)化為硬件電路的關(guān)鍵步驟 [7-9]。本設(shè)計綜合時選用的芯片是Spartan-ⅡE系列的xc2s100e。
綜合工具生成網(wǎng)表文件后,就可以實現(xiàn)設(shè)計,實現(xiàn)的步驟有:轉(zhuǎn)換(將多個設(shè)計文件合并為一個網(wǎng)表),映射(將網(wǎng)表中的邏輯符號(門)整合到物理元件中),布局布線(將元件放到器件中,并將它們連接起來,同時提取出時序數(shù)據(jù),并生成各種報告)。
4.2 綜合布線結(jié)果及分析
500)this.style.width=500;" border="0" />
500)this.style.width=500;" border="0" />
圖 4為資源利用結(jié)果圖表,由圖可見,slices的占用量為 722個,占該芯片 slices總數(shù)的 60%。slice registers的使用數(shù)量為 591個,占該芯片總數(shù)的 24%。4輸入查找表的使用總量是 915個,占該芯片查找表總數(shù)的 38%。
4.3 布線后仿真
本文中所舉出的測試均為布線后的仿真測試,該仿真的仿真延時文件包含的延時信息最全,不僅包含了門延時,還包含了實際布線延時,所以布局布線后仿真最準(zhǔn)確,能夠較好的反映芯片的實際工作情況。
500)this.style.width=500;" border="0" />
500)this.style.width=500;" border="0" />
4.4測試結(jié)果及分析
上面已經(jīng)對各模塊的各種功能進行了很多測試,為了更好地驗證所設(shè)計的芯片在實際中使用的可靠性,我們有必要進行一次總體的測試,本次仿真測試共包括單片機 5次讀標(biāo)志,4次提取數(shù)據(jù),1
次發(fā)送數(shù)據(jù)。測試結(jié)果及分析如下圖 5g所示:
500)this.style.width=500;" border="0" />
測試結(jié)果我們還可以看到:1)芯片各收發(fā)器模塊可以同時工作 2)發(fā)送與接收可以同時進行 3)接收緩存正常,并且在接收數(shù)據(jù)不足 8字節(jié)超時后時會自動停止緩存,然后向芯片中斷管理模塊提出中斷請求 4)中斷信號能夠正常輸出 5)各收發(fā)器的中斷請求無遺漏 6)收發(fā)器模塊的數(shù)據(jù)被讀取完畢之后,中斷標(biāo)志自動清除,芯片不再發(fā)出中斷請求信號。
5 結(jié) 論
本文設(shè)計了一種實現(xiàn)高效多串口單一中斷源的芯片。本設(shè)計的功能特點:在中斷管理方面,利用單一的中斷源來管理多個擴展串口,并保證多個串口中斷的無漏檢測與服務(wù);在數(shù)據(jù)傳送方面,實現(xiàn)串行數(shù)據(jù)的接收和發(fā)送,并且按照數(shù)據(jù)傳送是否有奇偶校驗位分為兩種工作模式,在接收時具有數(shù)據(jù)緩存的功能。并且上述各個功能模塊在單一的可編程邏輯器件芯片就能實現(xiàn)。
上述整個過程設(shè)計均采用 VHDL編程實現(xiàn),比以往電路手工設(shè)計的方法更加靈活,具有比較大的發(fā)展空間。文中分別利用 ModelSim和 ISE對程序進行仿真和綜合布線,在仿真平臺上驗證了設(shè)計的可行性,具有較好的應(yīng)用前景。
本文作者創(chuàng)新點:多串口單一中斷源的芯片,利用單一的中斷源來管理多個擴展串口,各個功能模塊在單一的可編程邏輯器件芯片就能實現(xiàn)。
參考文獻:
[1]陳力平,徐冠捷.基于單片機的串口擴展器.微計算機信息,2006, 03(2):13-15
[2]張毅剛.新編 Mcs-51單片機應(yīng)用設(shè)計.哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2003.65-73
[3]李玉麗,徐家品,張俊霞.利用 PSoC實現(xiàn)時鐘.微計算機信息,2009, 11(25):136-137
[4]劉春陽.基于 FPGA的串行通信實現(xiàn)與 CRC校驗:碩士學(xué)位論文.北京:北京化工大學(xué),2006
[5]候伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯.第二版.陜西:西安電子科技大學(xué)出版社,1999.228-236
[6]孫航.xilinix可編程邏輯器件的高級應(yīng)用與設(shè)計技巧.北京:電子工業(yè)出版社,2004.46-70
[7]吳穹等.利用 TL16C554實現(xiàn)多路串口通信.航空電子技術(shù),2005.36(3):33-35
[8]劉小芳,曾黃麟等.單片機的多串口擴展技術(shù)的設(shè)計.計算機測量與控制,2004,12(11): 1088-1090
[9]朱明程,董爾令.FPGA技術(shù)的最新發(fā)展綜述.電工教學(xué),1996,18(4):56-58
EDA 社區(qū)是一個軟件開發(fā)者社區(qū),我們的客戶是系統(tǒng)或半導(dǎo)體公司,他們開發(fā)下一代芯片,從汽車到數(shù)據(jù)中心再到物聯(lián)網(wǎng),甚至是制藥芯片。
關(guān)鍵字: 芯片設(shè)計 Siemens EDA2022年8月18日,世界半導(dǎo)體大會暨南京國際半導(dǎo)體博覽會正式開幕。此次大會以“世界芯·未來夢”為主題,旨在進一步聚集國內(nèi)國際資源,推進全球半導(dǎo)體組織、企業(yè)有效交流合作,共同探討新環(huán)境、新背景、新業(yè)態(tài)下全球半導(dǎo)體產(chǎn)業(yè)的發(fā)...
關(guān)鍵字: 瀾起科技 芯片設(shè)計 世界半導(dǎo)體大會本月,Google開發(fā)者上線了一個芯片設(shè)計的網(wǎng)站,網(wǎng)站的宣傳語表示該網(wǎng)站會讓每個人更容易大規(guī)模地構(gòu)建定制芯片。
關(guān)鍵字: 半導(dǎo)體 Google 芯片設(shè)計 芯片設(shè)計網(wǎng)站作為專注于核心智能控制芯片設(shè)計的國產(chǎn)一線廠商,公司旗下小華半導(dǎo)體受邀參加此次投資大會,小華半導(dǎo)體董事長謝文錄代表企業(yè)完成重大產(chǎn)業(yè)項目線上簽約。
關(guān)鍵字: 華大半導(dǎo)體 芯片設(shè)計 MCU