基于82C52功能仿真驗(yàn)證的研究
摘 要:首先介紹了利用仿真工具進(jìn)行電路功能仿真驗(yàn)證的過(guò)程與方法,以及仿真方案的確定,并以82C52為例詳細(xì)闡述了仿真驗(yàn)證中激勵(lì)文件的編寫和對(duì)82C52進(jìn)行功能驗(yàn)證的具體步驟。最后簡(jiǎn)單介紹了82C52的功能及其中各種寄存器的作用以及對(duì)寄存器的編程。
1 引 言
功能仿真主要驗(yàn)證被驗(yàn)證電路功能的正確性,主要分RTL級(jí)仿真與netliST的仿真。Netlist又分為DC輸出和As 輸出。由于neflist的仿真帶sdf文件(延時(shí)信息),所以要比RTL的仿真準(zhǔn)確,而且越到流程的后端,仿真的延時(shí)信息越真實(shí),仿真結(jié)果越接近實(shí)際。
2 驗(yàn)證方案的確定
本次設(shè)計(jì)的驗(yàn)證方案是根據(jù)單片機(jī)對(duì)外部串口電路的控制來(lái)實(shí)現(xiàn)的,驗(yàn)證方案的基本框圖如圖1所示。
圖1 82C52測(cè)試平臺(tái)
3 仿真所要準(zhǔn)備的文件
RTL(Pre sire):testbench(仿真激勵(lì)),Design(被仿真的設(shè)計(jì))DC_ netlist:testbench(仿真激勵(lì)),Design(被仿真的設(shè)計(jì)),saf(延時(shí)信息,由DC寫出),SimulatiONlibrary
Astro_ netlist(post sim):testbench(仿真激勵(lì)),Design(被仿真的設(shè)計(jì)),Sdf(延時(shí)信息,由 寫出),Simulation library
仿真的主要工具是VCS,主要命令是:>VC$testbeneh.v design.v—RI—M,同時(shí)還要進(jìn)行代碼覆蓋率的分析。由于在最開始的時(shí)候?qū)懙膖estbench覆蓋率一定不全,所以需要后來(lái)的不斷完善來(lái)提高代碼覆蓋率以達(dá)到設(shè)計(jì)要求。用VCS做代碼覆蓋率分析的主要命令是:在編譯時(shí)加入可選項(xiàng)一cmline+tsl+FSM+eond,這是四種覆蓋率,可以根據(jù)需要只選其中的一個(gè)或幾個(gè);VCS—cm—PP gui察看覆蓋率的結(jié)果。
4 testbench的編寫
把82C52與8032以及一些外圍接口電路連接在一起組成一個(gè)簡(jiǎn)單的系統(tǒng),通過(guò)匯編程序來(lái)控制82C52以達(dá)到仿真的目的。所以testbeneh的編寫也主要是完成這個(gè)簡(jiǎn)單系統(tǒng)的搭建,讀取事先編好的單片機(jī)匯編指令就可以了。
5 82C52功能描述
(1)復(fù)位
上電后,復(fù)位輸人為高,82C52在兩個(gè)Ix時(shí)鐘周期內(nèi)進(jìn)行初始化并進(jìn)入空閑模式直到程序?qū)懭恕?/p>
復(fù)位輸人為高電平時(shí),復(fù)位內(nèi)部波特率發(fā)生電路的時(shí)鐘計(jì)數(shù)器和位計(jì)數(shù)器。BRSR不受影響(第7位除外);清零USR(TC和TBRE除外);清零MCR;全部的離散信號(hào)、內(nèi)存單元和各種邏輯寄存器位都被清零和關(guān)閉。接著清除復(fù)位狀態(tài)(RST=0),82C52仍然保持空閑模式直到程序?qū)懭恕?/p>
仿真時(shí),首先驗(yàn)證Reset的正確性:
Hardware Reset:上電后,82C52的Reset輸人端必須保證至少兩個(gè)時(shí)鐘周期的高電平來(lái)初始化82C52使它進(jìn)人空閑模式。復(fù)位引起的操作有:
?、?gòu)?fù)位內(nèi)部波特率發(fā)生器的時(shí)鐘計(jì)數(shù)和位計(jì)數(shù),將Band Rate Select Register(BRSR)的第七位復(fù)位為0。@USR中除了TC和TBRE兩位被置位其余位被清零,MCR被清零,其它相關(guān)的存儲(chǔ)器、寄存器等也都被清零或設(shè)為無(wú)效,但要注意復(fù)位不影響UCR。復(fù)位后空閑模式會(huì)一直保持直到對(duì)82C52編程改變它的這種模式。此種復(fù)位不影響B(tài)RSR、UCR。
Software Reset:首先讀出USR、RBR中的數(shù)據(jù)來(lái)清除殘余的數(shù)據(jù)和狀態(tài),以免造成并發(fā)或重復(fù)控制,然后通過(guò)設(shè)置UCR、BRSR、MCR三個(gè)寄存器的值,使82C52恢復(fù)到空閑狀態(tài)。
(2)編程
編程前需要設(shè)置的寄存器有BRSR、MCR和UCR來(lái)初始化82C52,但要注意MCR要最后設(shè)置。
UCR:設(shè)置幀格式,DO位設(shè)置停止位的位數(shù),當(dāng)DO=0時(shí),停止位是1位,當(dāng)DO=1時(shí),如果數(shù)據(jù)是8位的,停止位是1.5位,數(shù)據(jù)位是5位,停止位是1位,數(shù)據(jù)位是6、7位,停止位是2位。D3、D2、D1位設(shè)置奇偶校驗(yàn)位。D5、D4為設(shè)置數(shù)據(jù)位數(shù),00=5bits,01=6bits,10:7bits,11=8bits。最高兩位為保留位設(shè)置為0。
BRSR:設(shè)置波特率,D1、Do兩位控制第一次分頻,00=/1,01=/3,10=/4,11=/5,D6到D2位控制第二次分頻有18種,所以一共有72種分頻方法,經(jīng)兩次分頻后的頻率為82C52最后用的頻率的16倍。
MCR:可以選擇82C52的工作模式、中斷控制、接收發(fā)送申請(qǐng)等命令。DO為請(qǐng)求發(fā)送控制位,低有效。Dl為終端準(zhǔn)備好控制位低有效。D2為允許中斷控制位,l為允許中斷。D5為允許接收控制位,1為允許接收,software Reset時(shí)此位設(shè)無(wú)效(0)。D6為允許終端中斷控制位,1允許中斷。D7必須設(shè)置為0保證82C52被正常設(shè)置。D3、D2為模式選擇控制位,00=Normal,01=Transmit Break,10=Echo mode。
到這里,82C52編程前的設(shè)置工作就完成了,并且這些設(shè)置都是通過(guò)匯編指令完成的。與接收和發(fā)送有關(guān)的寄存器有RBR和TBR,它們從DO 位到D7位依次為bitO到bit7,數(shù)據(jù)位數(shù)少于8時(shí),RBR中有效數(shù)據(jù)外的其它高位被置成0,TBR中則被忽略。
SDI的數(shù)據(jù)串行進(jìn)入接收寄存器然后并行進(jìn)入接收緩沖寄存器,然后DR輸出端和USR中的標(biāo)志位DR都被置位。TRB的狀態(tài)由TBRE輸出端和USR中的flag TBRE標(biāo)志,TRB和TC都是空時(shí)由USR中的TC flag標(biāo)志。
USR:UART狀態(tài)寄存器,這個(gè)寄存器中的數(shù)據(jù)可以通過(guò)CPU讀取來(lái)清空并保持直到狀態(tài)再次發(fā)生改變。
MSR:終端狀態(tài)寄存器。
編程結(jié)束,82C52將準(zhǔn)備執(zhí)行通信功能。
控制寄存器可以被寫進(jìn)任何命令。MCR最后被寫入,因?yàn)樗刂浦袛嗍鼓?,遠(yuǎn)程設(shè)備控制輸出和接收使能位。一旦82C52編程且工作時(shí),這些寄存器立即發(fā)送或接收數(shù)據(jù)。表1示意了82C52內(nèi)部寄存器的控制信號(hào)。
表1 82C52內(nèi)部寄存器的控制信號(hào)
82C52中斷結(jié)構(gòu):
82C52有一個(gè)中斷輸出引腳,在MCR中有兩個(gè)控制位:MIEN和INTEN。如果這兩個(gè)標(biāo)志位設(shè)為無(wú)效,將不會(huì)引起中斷,如果MIEN無(wú)效,INTEN有效,則引起中斷的信號(hào)有RBRK、TC、OE、FE、PE(此時(shí)檢查上升沿),如果兩個(gè)都設(shè)為有效,則引起中斷的信號(hào)除了上面的還有DSR\和CTS\(上升沿和下降沿都有效)。
82C52可能發(fā)生中斷的條件有:
(1)SDI引腳接收到數(shù)據(jù)(RBRK??)。
(2)發(fā)送數(shù)據(jù)完成(TC)。
(3)接收數(shù)據(jù)時(shí)發(fā)生錯(cuò)誤,有錯(cuò)誤信息產(chǎn)生(OE、FE、PE)。
(4)終端控制信號(hào)發(fā)生變化(DSR\、CTS\)。
以上各個(gè)部分功能可以通過(guò)對(duì)8032的編程逐個(gè)驗(yàn)證,驗(yàn)證時(shí)準(zhǔn)備把輸出的數(shù)據(jù)保存與輸入的數(shù)據(jù)進(jìn)行比較,正確就可以pass,不正確也可以定位是那一個(gè)寄存器或數(shù)據(jù)出錯(cuò)。
6 結(jié)束語(yǔ)
一般的簡(jiǎn)單接口電路,本人認(rèn)為都可以通過(guò)類似單片機(jī)的控制器來(lái)做驗(yàn)證。這樣激勵(lì)就可以通過(guò)控制器給出,可以不必考慮給出激勵(lì)的時(shí)序關(guān)系是否正確,即簡(jiǎn)單又方便。