版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、電子科技大學,可編程ASIC,模塊化硬件與進程模型,電子科技大學,目的,第三部分(模塊化硬件與進程模型)與第四部分(信號傳輸模型)均是講述vhdl硬件描述語言的原理 這兩部分的學習目的是為了讓大家了解硬件描述語言的運行機制,了解硬件仿真的原理,有利于在以后的設計中使用多語言進行各種級別的建模; 對于打算從事EDA工具軟件設計的學員也有一定的參考價值。,數(shù)字電路的信號跳變特點,數(shù)字電路,din0,din1,dout,輸出(dout)的值只有在輸入(din0,din1)發(fā)生變化的時候才會變化(可能有所延遲)理想情況下是瞬間變化,沒有過渡時間。,din0,din1,dout,數(shù)字電路的信號跳變特點,
2、數(shù)字電路,din0,din1,dout,輸出(dout)的值只有在輸入(din0,din1)發(fā)生變化的時候才會變化(可能有所延遲)理想情況下是瞬間變化,沒有過渡時間。,din0,din1,dout,電子科技大學,本節(jié)假設,為了問題分析的方便,本節(jié)暫時假設,輸出的跳變與輸入的跳變之間無延遲,跳變無過渡。,用軟件方法來仿真硬件行為,數(shù)字電路元件,din0,din1,dout,din0,din1,dout,問題:如何用軟件的方法來仿真這個硬件元件的行為?,用軟件方法來仿真硬件行為,數(shù)字電路元件,din0,din1,dout,din0,din1,dout,Funct() if(din0 和 din1滿
3、足某種條件) dout = 0; Else dout = 1; / 在這里假設din0,din1和dout為全局量,用軟件方法來仿真硬件行為,數(shù)字電路元件,din0,din1,dout,din0,din1,dout,問題:何時調用Funct?,Funct() if(din0 和 din1滿足某種條件) dout = 0; Else dout = 1; / 在這里假設din0,din1和dout為全局量,時間方案(調用方案)1,數(shù)字電路元件,din0,din1,dout,din0,din1,dout,t,按照特定的分辨率對時間軸作細劃分,調用funct。 繼承了傳統(tǒng)電子系統(tǒng)(模擬,平滑系統(tǒng))的仿
4、真思想。 缺點:調用頻繁,仿真時cpu負擔過重。,時間方案(調用方案)2,數(shù)字電路元件,din0,din1,dout,din0,din1,dout,t,(理想數(shù)字系統(tǒng)仿真)只需要對輸入跳變點調用Funct。 缺點:只適合于理想數(shù)字波形。,電子科技大學,ASIC仿真時間方案,基本上是采用第二種方案。 以下的仿真討論均使用第二種方案。,波形記錄舉例,數(shù)字電路,din0,din1,dout,din0,din1,dout,t,t0,t1,t2,電子科技大學,仿真算法流程,讀取波形文件中時間st時 的輸入值(din0, din1),調用Funct,往波形文件記錄St時的 輸出值(dout, ),st為仿
5、真時間指針,時間t結束?,St指向波形文件中 的下一個時間點,退出,St指向波形文件中 的起始時間點,Y,N,電子科技大學,考慮復雜的情況:多元件(多模塊),u1,u3,u2,a,b,c,e,f,g,VHDL解決方案:一個硬件模塊對應一個軟件進程。,U1: process(a, b) U2: process(c) U3: process(e, f),電子科技大學,進程調度(方案1),u1,u3,u2,a,b,c,e,f,g,方案1: 偷懶方法。 當任何一個輸入(a,b,c)發(fā)生變化時,均將所有的進程 調度一次。,問題:用什么來決定調度的順序?,方案1修補:根據(jù)信號流向來確定調度順序。,問題:當
6、存在信號反饋的時候又如何處理?,電子科技大學,進程調度(方案2),u1,u3,u2,a,b,c,e,f,g,方案2: 對每一個模塊,只有當該模塊的輸入發(fā)生變化時,該 模塊才被調用。,問題:當模塊的輸入發(fā)生變化,但是又沒有引起模塊的硬件動作時,這種方法會有什么缺點? 例子:寄存器的時鐘發(fā)生變化時,寄存器才會產(chǎn)生硬件動作,而數(shù)據(jù)輸入發(fā)生變化時,寄存器并不產(chǎn)生任何動作。,電子科技大學,VHDL中process的定義,ModuleName:Process( 敏感信號列表 ) Begin - 進程描述語句。 End process;,當敏感信號列表中的任何一個信號發(fā)生變化,該進程都會被調度,電子科技大學
7、,Process例子,假設U2為非門,則例子程序如下: U2: process( c ) Begin if( c = 1 ) then f = 0; else f = 1; end if; End process;,當c發(fā)生變化時,該進程被調度.,表示信號賦值。,電子科技大學,VHDL的進程調度,u1,u3,u2,a,b,c,e,f,g,a,b,c,e,f,電子科技大學,VHDL的進程調度,a,b,c,e,f,進入一個新的 仿真周期,U1_process,被調度的進程:,一個 子仿真周期,電子科技大學,VHDL的進程調度,u1,u3,u2,a,b,c,e,f,g,a,b,c,e,f,被調度的進
8、程:,進入一個新的 仿真周期,U1_process,U3_process,子仿真周期1,子仿真周期2,VHDL的進程調度,u1,u3,u2,a,b,c,e,f,g,a,b,c,e,f,進入一個新的仿真周期,被調度的進程:,U1_process,U2_process,U3_process,電子科技大學,聯(lián)想:SARS隔離檢測,隔離 子周期1,隔離 子周期2,隔離 子周期3,電子科技大學,VHDL進程調度算法,1.如果仿真事件(有信號發(fā)生變化)搜索完,則結束仿真;否則,跳到下一個信號事件點,此時進入一個新的仿真周期; 2.找出所有對發(fā)生變化的信號敏感的進程,進入一個新的子仿真周期,依次對這些進程調
9、度一次; 3.如果進程調度后出現(xiàn)新的事件,則回到第2步;否則回到第1步。,電子科技大學,VHDL仿真思想,子仿真周期的時間就是一個Delta延時,而Delta延時為0延時。 顯然,一個仿真周期可以包含多個子仿真周期,也就是包含多個Delta延時。 Delta延時數(shù)目的增加,并不會推進仿真時鐘。也即“微觀時間增量不改變宏觀時間”;只有仿真周期的增加才會推進仿真時鐘。 硬件模塊的運行之間是并行的關系;軟件進程的調度之間是并發(fā)的關系。硬件的并行是通過軟件的并發(fā)來仿真。,電子科技大學,補充:并發(fā)與并行,并發(fā):,電子科技大學,補充:并發(fā)與并行,并行就是真正的同時,在任何時刻(瞬間),多個進程都在同時地運
10、行。,電子科技大學,VHDL軟件體系,硬件電路,邏輯綜合器,process(); process(); process(); ,編譯 器,進程調度器 (仿真器),仿真結果,VHDL 源代碼,EDA工具,綜合形成的源碼形式網(wǎng)表,電子科技大學,進程結構體(即vhdl源代碼)里已經(jīng)描述了整個硬件的形態(tài),所以它可以被綜合器綜合成硬件; 并不是所有描述方式的vhdl代碼都可以被綜合成硬件。太抽象的描述只適合做系統(tǒng)建模和仿真。,電子科技大學,顯然綜合器是不會去關心敏感信號量的,因為它不存在進程調度的問題,而是直接根據(jù)進程體內的代碼來形成硬件電路。,電子科技大學,但是要注意,即使編寫的是面向綜合的代碼,敏感
11、信號量仍然需要補全。因為敏感信號的缺漏對于仿真器來說是一個錯誤,會導致仿真時應該被調度的進程沒有得到調度。 而綜合器形成的綜合后仿真用的網(wǎng)表源文件,是保證不丟失敏感信號的。 如果設計者丟失了敏感信號,就會造成設計級別的代碼和綜合后的代碼之間仿真結果不相符。,電子科技大學,對于敏感信號,一個模塊,并非所有的輸入都必須作為敏感信號,只有引起硬件動作的信號才必須作為敏感信號。,電子科技大學,對于敏感信號,將所有的輸入信號放入進程的敏感信號表中,在邏輯上并沒有什么錯誤,但是會引起進程調度頻繁而導致仿真效率降低(cpu負擔太重)。,事情結束了嗎?,U1,U2,a,b,c,假設u1和u2都是“直連邏輯”(
12、在數(shù)字邏輯設計中,叫做 緩沖器元件),則它們的進程描述(用c語言)如為:,/*敏感信號量 為(a) */ Void functU1() b = a; ,/* 敏感信號量 為(b) */ Void functU2() c = b; ,很顯然,當a 的值發(fā)生變化 時,會激活兩 個仿真子周期, functU1和functU2 依次得到調度, 從而a的值得能夠 可靠地傳播到c。,用另外的方式建立敏感信號表,這里省略。,事情結束了嗎?,U1,U2,a,b,c,假設u1和u2都是“直連邏輯”(在數(shù)字邏輯設計中,叫做 緩沖器元件),則它們的進程描述(用VHDL語言)如為:,Process(a) Begin
13、b = a; End process;,Process(b) Begin c = b; End process;,很顯然,當a 的值發(fā)生變化 時,會激活兩 個仿真子周期, functU1和functU2 依次得到調度, 從而a的值得能夠 可靠地傳播到c。,嘗試加上時鐘變成時序電路,U1,U2,a,b,c,clk,Void functU1() if(rising_edge(clk) b = a; ,C語言描述的進程如下:,Void functU2() if(rising_edge(clk) c = b; ,注意這兩個進程 的敏感信號量都 是clk。,嘗試加上時鐘變成時序電路,U1,U2,a,b,
14、c,clk,Void functU1() if(rising_edge(clk) b = a; ,C語言描述的進程如下:,Void functU2() if(rising_edge(clk) c = b; ,當clk發(fā)生變化時,這兩個 進程會被激活,并且依次 在一個子仿真周期內被調 度。,嘗試加上時鐘變成時序電路,U1,U2,a,b,c,clk,Void functU1() if(rising_edge(clk) b = a; ,C語言描述的進程如下:,Void functU2() if(rising_edge(clk) c = b; ,如果首先調度functU2,再 調度functU1 ,則
15、仿真結 果能夠符合實際的硬件行 為。,嘗試加上時鐘變成時序電路,U1,U2,a,b,c,clk,Void functU1() if(rising_edge(clk) b = a; ,C語言描述的進程如下:,Void functU2() if(rising_edge(clk) c = b; ,而如果首先調度functU1, 再調度functU2,則仿真 結果與實際的硬件行為 不符!,電子科技大學,問題,我們發(fā)現(xiàn),調度順序的不同,會導致截然不同的仿真結果; 以下是這個問題的另外一種形式的表述,電子科技大學,U3,U1,U2,a,b,c,/* 敏感信號量 為(a, b)*/ functU3() b
16、= a; c = b; ,顯然,兩種 方式中,a的 值都能夠可 靠地傳輸?shù)絚。,將u1和u2合并成新的元件u3,并且只用一個進程函數(shù)描述,/* 敏感信號量 為(a, b) */ functU3() c = b; b = a; ,元件合并,方式1:,方式2:,電子科技大學,U3,U1,U2,a,b,c,/* 敏感信號量 為(a, b)*/ functU3() b = a; c = b; ,顯然,兩種 方式中,a的 值都能夠可 靠地傳輸?shù)絚。,將u1和u2合并成新的元件u3,并且只用一個進程函數(shù)描述,/* 敏感信號量 為(a, b) */ functU3() c = b; b = a; ,值得注意
17、的是,這種純組合電路的進程函數(shù)中,被讀的信號應該都加入敏感信號表中,電子科技大學,U3,U1,U2,a,b,c,/* 敏感信號量 為(a, b)*/ Process(a,b) begin b = a; c = b; End process;,顯然,兩種 方式中,a的 值都能夠可 靠地傳輸?shù)絚。,將u1和u2合并成新的元件u3,并且只用一個進程函數(shù)描述,/* 敏感信號量 為(a, b) */ Process( a,b) begin c = b; b = a; End process;,值得注意的是,這種純組合電路的進程函數(shù)中,被讀的信號應該都加入敏感信號表中,電子科技大學,U3,U1,U2,a,
18、b,c,/* 敏感信號量 為(a, b)*/ Process(a,b) begin b = a; c = b; End process;,顯然,兩種 方式中,a的 值都能夠可 靠地傳輸?shù)絚。,將u1和u2合并成新的元件u3,并且只用一個進程函數(shù)描述,/* 敏感信號量 為(a, b) */ Process( a,b) begin c = b; b = a; End process;,這樣在a發(fā)生變化時,導致進程被調度兩次,從而保證了a的值順利地在一個仿真周期內“立即”地傳輸?shù)絚。,電子科技大學,U1,U2,a,b,c,clk,/* 敏感信號為(clk) */ FunctU3() if( rising_edge(clk) ) c = b; b = a; ,此時仿真沒問題,給這個系統(tǒng)加上時鐘,變成時序電路,電子科技大學,U1,U2,a,b,c,clk,/* 敏感信號為(clk) */ FunctU3() if( rising_edge(clk) ) b = a; c = b; ,此時仿真出錯,與實際不符!,交換順序!,電子科技大學,這是為什么?如何解決?,電子科技大學,作業(yè)(挑戰(zhàn)免考題的基礎),以下是一個數(shù)字硬件系統(tǒng)的模塊框圖。,u1,u2,u3,a,b,c,d,要求,1. 為輸入輸出信號定義一種波形記錄文件格式,編寫函數(shù),能夠根據(jù)文件自動
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年鶴壁市直屬機關遴選公務員考試真題匯編附答案
- 2024年菏澤家政職業(yè)學院輔導員考試參考題庫附答案
- 2024年長沙工業(yè)職工大學馬克思主義基本原理概論期末考試題附答案
- 2025安徽淮南市謝家集區(qū)社區(qū)工作者招聘40人備考題庫附答案
- 2025內蒙古赤峰市林西縣體制單位面向林西招錄備考題庫附答案
- 2025年事業(yè)單位招聘《行測》考試題庫含答案
- 電力系統(tǒng)維護與檢修作業(yè)指導
- 2025年電力市場營銷策劃與實施手冊
- 2024年湖北經(jīng)濟學院輔導員考試參考題庫附答案
- 2024年湖南師范大學樹達學院輔導員考試筆試題庫附答案
- 移動通信基站設備安裝培訓教材
- 2024-2025學年云南省昆明市盤龍區(qū)高二(上)期末數(shù)學試卷(含答案)
- 臨床成人失禁相關性皮炎的預防與護理團體標準解讀
- 創(chuàng)新創(chuàng)業(yè)教育學習通超星期末考試答案章節(jié)答案2024年
- 《最奇妙的蛋》完整版
- 三年級科學上冊蘇教版教學工作總結共3篇(蘇教版三年級科學上冊知識點整理)
- 種子室內檢驗技術-種子純度鑒定(種子質量檢測技術課件)
- SEMI S1-1107原版完整文檔
- 心電監(jiān)測技術操作考核評分標準
- 大疆植保無人機考試試題及答案
- 《LED顯示屏基礎知識培訓》
評論
0/150
提交評論