可編程ASIC設(shè)計(jì)及應(yīng)用 模塊化硬件與進(jìn)程模型ppt課件_第1頁(yè)
可編程ASIC設(shè)計(jì)及應(yīng)用 模塊化硬件與進(jìn)程模型ppt課件_第2頁(yè)
可編程ASIC設(shè)計(jì)及應(yīng)用 模塊化硬件與進(jìn)程模型ppt課件_第3頁(yè)
可編程ASIC設(shè)計(jì)及應(yīng)用 模塊化硬件與進(jìn)程模型ppt課件_第4頁(yè)
可編程ASIC設(shè)計(jì)及應(yīng)用 模塊化硬件與進(jìn)程模型ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、可編程ASIC模塊化硬件與進(jìn)程模型 目的目的 第三部分第三部分(模塊化硬件與進(jìn)程模型模塊化硬件與進(jìn)程模型)與第四部分與第四部分(信號(hào)傳輸模型信號(hào)傳輸模型)均是講述均是講述vhdl硬件描畫言語(yǔ)的硬件描畫言語(yǔ)的原理原理 這兩部分的學(xué)習(xí)目的是為了讓大家了解硬件描這兩部分的學(xué)習(xí)目的是為了讓大家了解硬件描畫言語(yǔ)的運(yùn)轉(zhuǎn)機(jī)制,了解硬件仿真的原理,有畫言語(yǔ)的運(yùn)轉(zhuǎn)機(jī)制,了解硬件仿真的原理,有利于在以后的設(shè)計(jì)中運(yùn)用多言語(yǔ)進(jìn)展各種級(jí)別利于在以后的設(shè)計(jì)中運(yùn)用多言語(yǔ)進(jìn)展各種級(jí)別的建模;的建模; 對(duì)于方案從事對(duì)于方案從事EDA工具軟件設(shè)計(jì)的學(xué)員也有一工具軟件設(shè)計(jì)的學(xué)員也有一定的參考價(jià)值。定的參考價(jià)值。數(shù)字電路的信號(hào)跳變特

2、點(diǎn)數(shù)字電路din0din1dout輸出(dout)的值只需在輸入(din0,din1)發(fā)生變化的時(shí)候才會(huì)變化(可以有所延遲)理想情況下是瞬間變化,沒(méi)有過(guò)渡時(shí)間。din0din1dout數(shù)字電路的信號(hào)跳變特點(diǎn)數(shù)字電路din0din1dout輸出(dout)的值只需在輸入(din0,din1)發(fā)生變化的時(shí)候才會(huì)變化(可以有所延遲)理想情況下是瞬間變化,沒(méi)有過(guò)渡時(shí)間。din0din1dout本節(jié)假設(shè) 為了問(wèn)題分析的方便,本節(jié)暫時(shí)假設(shè),輸出的跳變與輸入的跳變之間無(wú)延遲,跳變無(wú)過(guò)渡。用軟件方法來(lái)仿真硬件行為數(shù)字電路元件din0din1doutdin0din1dout問(wèn)題:如何用軟件的方法來(lái)仿真這個(gè)硬件元

3、件的行為?用軟件方法來(lái)仿真硬件行為數(shù)字電路元件din0din1doutdin0din1doutFunct() if(din0 和 din1滿足某種條件) dout = 0; Else dout = 1; / 在這里假設(shè)din0,din1和dout為全局量用軟件方法來(lái)仿真硬件行為數(shù)字電路元件din0din1doutdin0din1dout問(wèn)題:何時(shí)調(diào)用Funct?Funct() if(din0 和 din1滿足某種條件) dout = 0; Else dout = 1; / 在這里假設(shè)din0,din1和dout為全局量時(shí)間方案(調(diào)用方案)1數(shù)字電路元件din0din1doutdin0din1d

4、outt按照特定的分辨率對(duì)時(shí)間軸作細(xì)劃分,調(diào)用funct。承襲了傳統(tǒng)電子系統(tǒng)(模擬,平滑系統(tǒng))的仿真思想。缺陷:調(diào)用頻繁,仿真時(shí)cpu負(fù)擔(dān)過(guò)重。時(shí)間方案(調(diào)用方案)2數(shù)字電路元件din0din1doutdin0din1doutt(理想數(shù)字系統(tǒng)仿真)只需求對(duì)輸入跳變點(diǎn)調(diào)用Funct。缺陷:只適宜于理想數(shù)字波形。ASIC仿真時(shí)間方案 根本上是采用第二種方案。 以下的仿真討論均運(yùn)用第二種方案。波形記錄舉例數(shù)字電路din0din1doutdin0din1doutttDin0 din1001t011t110t201t0t1t2仿真算法流程讀取波形文件中時(shí)間st時(shí)的輸入值(din0, din1)調(diào)用Fun

5、ct往波形文件記錄St時(shí)的輸出值(dout, )st為仿真時(shí)間指針時(shí)間t終了?St指向波形文件中的下一個(gè)時(shí)間點(diǎn)退出St指向波形文件中的起始時(shí)間點(diǎn)YN思索復(fù)雜的情況:多元件(多模塊)u1u3u2abcefgVHDL處置方案:一個(gè)硬件模塊對(duì)應(yīng)一個(gè)軟件進(jìn)程。U1: process(a, b)U2: process(c)U3: process(e, f)進(jìn)程調(diào)度(方案1)u1u3u2abcefg方案1: 偷懶方法。 當(dāng)任何一個(gè)輸入(a,b,c)發(fā)生變化時(shí),均將一切的進(jìn)程調(diào)度一次。問(wèn)題:用什么來(lái)決議調(diào)度的順序?方案1修補(bǔ):根據(jù)信號(hào)流向來(lái)確定調(diào)度順序。問(wèn)題:當(dāng)存在信號(hào)反響的時(shí)候又如何處置?進(jìn)程調(diào)度(方案2

6、)u1u3u2abcefg方案2: 對(duì)每一個(gè)模塊,只需當(dāng)該模塊的輸入發(fā)生變化時(shí),該模塊才被調(diào)用。問(wèn)題:當(dāng)模塊的輸入發(fā)生變化,但是又沒(méi)有引起模塊的硬件動(dòng)作時(shí),這種方法會(huì)有什么缺陷?例子:存放器的時(shí)鐘發(fā)生變化時(shí),存放器才會(huì)產(chǎn)生硬件動(dòng)作,而數(shù)據(jù)輸入發(fā)生變化時(shí),存放器并不產(chǎn)生任何動(dòng)作。VHDL中process的定義 ModuleName:Process( 敏感信號(hào)列表 ) Begin - 進(jìn)程描畫語(yǔ)句。 End process;當(dāng)敏感信號(hào)列表中的任何一個(gè)信號(hào)發(fā)生變化,該進(jìn)程都會(huì)被調(diào)度Process例子 假設(shè)假設(shè)U2為非門,那么例子程序如下:為非門,那么例子程序如下: U2: process( c )

7、Begin if( c = 1 ) then f = 0; else f = 1; end if; End process;當(dāng)c發(fā)生變化時(shí),該進(jìn)程被調(diào)度.表示信號(hào)賦值。VHDL的進(jìn)程調(diào)度u1u3u2abcefgabcefVHDL的進(jìn)程調(diào)度u1u3u2abcefgabcef進(jìn)入一個(gè)新的進(jìn)入一個(gè)新的仿真周期仿真周期U1_process被調(diào)度的進(jìn)程:一個(gè)一個(gè)子仿真周期子仿真周期VHDL的進(jìn)程調(diào)度u1u3u2abcefgabcef被調(diào)度的進(jìn)程:進(jìn)入一個(gè)新的進(jìn)入一個(gè)新的仿真周期仿真周期U1_processU3_process子仿真周期1子仿真周期2VHDL的進(jìn)程調(diào)度u1u3u2abcefgabcef進(jìn)入

8、一個(gè)新進(jìn)入一個(gè)新的仿真周期的仿真周期被調(diào)度的進(jìn)程:U1_processU2_processU3_process子仿真周期1子仿真周期2聯(lián)想:SARS隔離檢測(cè)隔離子周期1隔離子周期2隔離子周期3VHDL進(jìn)程調(diào)度算法 1.假設(shè)仿真事件假設(shè)仿真事件(有信號(hào)發(fā)生變化有信號(hào)發(fā)生變化)搜索完,搜索完,那么終了仿真;否那么,跳到下一個(gè)信那么終了仿真;否那么,跳到下一個(gè)信號(hào)事件點(diǎn),此時(shí)進(jìn)入一個(gè)新的仿真周期;號(hào)事件點(diǎn),此時(shí)進(jìn)入一個(gè)新的仿真周期; 2.找出一切對(duì)發(fā)生變化的信號(hào)敏感的進(jìn)程,找出一切對(duì)發(fā)生變化的信號(hào)敏感的進(jìn)程,進(jìn)入一個(gè)新的子仿真周期,依次對(duì)這些進(jìn)入一個(gè)新的子仿真周期,依次對(duì)這些進(jìn)程調(diào)度一次;進(jìn)程調(diào)度一

9、次; 3.假設(shè)進(jìn)程調(diào)度后出現(xiàn)新的事件,那么回假設(shè)進(jìn)程調(diào)度后出現(xiàn)新的事件,那么回到第到第2步;否那么回到第步;否那么回到第1步。步。VHDL仿真思想 子仿真周期的時(shí)間就是一個(gè)子仿真周期的時(shí)間就是一個(gè)Delta延時(shí),而延時(shí),而Delta延時(shí)為延時(shí)為0延時(shí)。延時(shí)。 顯然,一個(gè)仿真周期可以包含多個(gè)子仿真周期,顯然,一個(gè)仿真周期可以包含多個(gè)子仿真周期,也就是包含多個(gè)也就是包含多個(gè)Delta延時(shí)。延時(shí)。 Delta延時(shí)數(shù)目的添加,并不會(huì)推進(jìn)仿真時(shí)鐘。延時(shí)數(shù)目的添加,并不會(huì)推進(jìn)仿真時(shí)鐘。也即也即“微觀時(shí)間增量不改動(dòng)宏觀時(shí)間;只需微觀時(shí)間增量不改動(dòng)宏觀時(shí)間;只需仿真周期的添加才會(huì)推進(jìn)仿真時(shí)鐘。仿真周期的添加才

10、會(huì)推進(jìn)仿真時(shí)鐘。 硬件模塊的運(yùn)轉(zhuǎn)之間是并行的關(guān)系;軟件進(jìn)程硬件模塊的運(yùn)轉(zhuǎn)之間是并行的關(guān)系;軟件進(jìn)程的調(diào)度之間是并發(fā)的關(guān)系。硬件的并行是經(jīng)過(guò)的調(diào)度之間是并發(fā)的關(guān)系。硬件的并行是經(jīng)過(guò)軟件的并發(fā)來(lái)仿真。軟件的并發(fā)來(lái)仿真。補(bǔ)充:并發(fā)與并行 并發(fā):補(bǔ)充:并發(fā)與并行 并行就是真正的同時(shí),在任何時(shí)辰(瞬間),多個(gè)進(jìn)程都在同時(shí)地運(yùn)轉(zhuǎn)。VHDL軟件體系硬件電路process();process();process();編譯器進(jìn)程調(diào)度器(仿真器)仿真結(jié)果VHDL源代碼源代碼EDA工具工具綜合構(gòu)成的源碼方式網(wǎng)表 進(jìn)程構(gòu)造體(即vhdl源代碼)里曾經(jīng)描畫了整個(gè)硬件的外形,所以它可以被綜合器綜合成硬件; 并不是一切描畫

11、方式的vhdl代碼都可以被綜合成硬件。太籠統(tǒng)的描畫只適宜做系統(tǒng)建模和仿真。 顯然綜合器是不會(huì)去關(guān)懷敏感信號(hào)量的,由于它不存在進(jìn)程調(diào)度的問(wèn)題,而是直接根據(jù)進(jìn)程體內(nèi)的代碼來(lái)構(gòu)成硬件電路。 但是要留意,即使編寫的是面向綜合的代碼,敏感信號(hào)量依然需求補(bǔ)全。由于敏感信號(hào)的缺漏對(duì)于仿真器來(lái)說(shuō)是一個(gè)錯(cuò)誤,會(huì)導(dǎo)致仿真時(shí)應(yīng)該被調(diào)度的進(jìn)程沒(méi)有得到調(diào)度。 而綜合器構(gòu)成的綜合后仿真用的網(wǎng)表源文件,是保證不喪失敏感信號(hào)的。 假設(shè)設(shè)計(jì)者喪失了敏感信號(hào),就會(huì)呵斥設(shè)計(jì)級(jí)別的代碼和綜合后的代碼之間仿真結(jié)果不相符。對(duì)于敏感信號(hào) 一個(gè)模塊,并非一切的輸入都必需作為一個(gè)模塊,并非一切的輸入都必需作為敏感信號(hào),只需引起硬件動(dòng)作的信號(hào)才

12、敏感信號(hào),只需引起硬件動(dòng)作的信號(hào)才必需作為敏感信號(hào)。必需作為敏感信號(hào)。對(duì)于敏感信號(hào) 將一切的輸入信號(hào)將一切的輸入信號(hào)放入進(jìn)程的敏感信放入進(jìn)程的敏感信號(hào)表中,在邏輯上號(hào)表中,在邏輯上并沒(méi)有什么錯(cuò)誤,并沒(méi)有什么錯(cuò)誤,但是會(huì)引起進(jìn)程調(diào)但是會(huì)引起進(jìn)程調(diào)度頻繁而導(dǎo)致仿真度頻繁而導(dǎo)致仿真效率降低效率降低(cpu負(fù)擔(dān)負(fù)擔(dān)太重太重)。事情終了了嗎?U1U2abc 假設(shè)u1和u2都是“直連邏輯(在數(shù)字邏輯設(shè)計(jì)中,叫做緩沖器元件),那么它們的進(jìn)程描畫(用c言語(yǔ))如為:/*敏感信號(hào)量為(a) */Void functU1() b = a;/* 敏感信號(hào)量為(b) */Void functU2() c = b;很顯然

13、,當(dāng)a的值發(fā)生變化時(shí),會(huì)激活兩個(gè)仿真子周期,functU1和functU2依次得到調(diào)度,從而a的值得可以可靠地傳播到c。用另外的方式建立敏感信號(hào)表,這里省略。事情終了了嗎?U1U2abc 假設(shè)u1和u2都是“直連邏輯(在數(shù)字邏輯設(shè)計(jì)中,叫做緩沖器元件),那么它們的進(jìn)程描畫(用VHDL言語(yǔ))如為:Process(a)Begin b = a;End process;Process(b)Begin c = b;End process;很顯然,當(dāng)a的值發(fā)生變化時(shí),會(huì)激活兩個(gè)仿真子周期,functU1和functU2依次得到調(diào)度,從而a的值得可以可靠地傳播到c。嘗試加上時(shí)鐘變成時(shí)序電路U1U2abccl

14、kVoid functU1() if(rising_edge(clk) b = a;C言語(yǔ)描畫的進(jìn)程如下:Void functU2() if(rising_edge(clk) c = b;留意這兩個(gè)進(jìn)程的敏感信號(hào)量都是clk。嘗試加上時(shí)鐘變成時(shí)序電路U1U2abcclkVoid functU1() if(rising_edge(clk) b = a;C言語(yǔ)描畫的進(jìn)程如下:Void functU2() if(rising_edge(clk) c = b;當(dāng)clk發(fā)生變化時(shí),這兩個(gè)進(jìn)程會(huì)被激活,并且依次在一個(gè)子仿真周期內(nèi)被調(diào)度。嘗試加上時(shí)鐘變成時(shí)序電路U1U2abcclkVoid functU1(

15、) if(rising_edge(clk) b = a;C言語(yǔ)描畫的進(jìn)程如下:Void functU2() if(rising_edge(clk) c = b;假設(shè)首先調(diào)度f(wàn)unctU2,再調(diào)度f(wàn)unctU1 ,那么仿真結(jié)果可以符合實(shí)際的硬件行為。嘗試加上時(shí)鐘變成時(shí)序電路U1U2abcclkVoid functU1() if(rising_edge(clk) b = a;C言語(yǔ)描畫的進(jìn)程如下:Void functU2() if(rising_edge(clk) c = b;而假設(shè)首先調(diào)度f(wàn)unctU1,再調(diào)度f(wàn)unctU2,那么仿真結(jié)果與實(shí)際的硬件行為不符!問(wèn)題 我們發(fā)現(xiàn),調(diào)度順序的不同,會(huì)導(dǎo)

16、致截然不同的仿真結(jié)果; 以下是這個(gè)問(wèn)題的另外一種方式的表述U3U1U2abc/* 敏感信號(hào)量為(a, b)*/functU3() b = a; c = b;顯然,兩種方式中,a的值都可以可靠地傳輸?shù)絚。將u1和u2合并成新的元件u3,并且只用一個(gè)進(jìn)程函數(shù)描畫/* 敏感信號(hào)量為(a, b) */functU3() c = b; b = a;元件合并方式1:方式2:U3U1U2abc/* 敏感信號(hào)量為(a, b)*/functU3() b = a; c = b;顯然,兩種方式中,a的值都可以可靠地傳輸?shù)絚。將u1和u2合并成新的元件u3,并且只用一個(gè)進(jìn)程函數(shù)描畫/* 敏感信號(hào)量為(a, b) */

17、functU3() c = b; b = a;值得留意的是,這種純組合電路的進(jìn)程函數(shù)中,被讀的信號(hào)應(yīng)該都參與敏感信號(hào)表中U3U1U2abc/* 敏感信號(hào)量為(a, b)*/Process(a,b)begin b = a; c = b;End process;顯然,兩種方式中,a的值都可以可靠地傳輸?shù)絚。將u1和u2合并成新的元件u3,并且只用一個(gè)進(jìn)程函數(shù)描畫/* 敏感信號(hào)量為(a, b) */Process( a,b)begin c = b; b = a;End process;值得留意的是,這種純組合電路的進(jìn)程函數(shù)中,被讀的信號(hào)應(yīng)該都參與敏感信號(hào)表中U3U1U2abc/* 敏感信號(hào)量為(a,

18、 b)*/Process(a,b)begin b = a; c = b;End process;顯然,兩種方式中,a的值都可以可靠地傳輸?shù)絚。將u1和u2合并成新的元件u3,并且只用一個(gè)進(jìn)程函數(shù)描畫/* 敏感信號(hào)量為(a, b) */Process( a,b)begin c = b; b = a;End process;這樣在a發(fā)生變化時(shí),導(dǎo)致進(jìn)程被調(diào)度兩次,從而保證了a的值順利地在一個(gè)仿真周期內(nèi)“立刻地傳輸?shù)絚。U1U2abcclk/* 敏感信號(hào)為(clk) */FunctU3() if( rising_edge(clk) ) c = b; b = a; 此時(shí)仿真沒(méi)問(wèn)題給這個(gè)系統(tǒng)加上時(shí)鐘,變

19、成時(shí)序電路U1U2abcclk/* 敏感信號(hào)為(clk) */FunctU3() if( rising_edge(clk) ) b = a; c = b; 此時(shí)仿真出錯(cuò),與實(shí)際不符!交換順序! 這是為什么?如何處置?作業(yè)(挑戰(zhàn)免考題的根底) 以下是一個(gè)數(shù)字硬件系統(tǒng)的模塊框圖。u1u2u3abcd要求 1. 為輸入輸出信號(hào)定義一種波形記錄文件格式,編寫函數(shù),可以根據(jù)文件自動(dòng)畫出信號(hào)波形; 2. 編寫rising_edge函數(shù): bool rising_edge(std_logic clk ); 其中std_logic為自定義類型,其在數(shù)字邏輯上的值暫時(shí)為(0, 1)。要求 3. 假設(shè)曾經(jīng)有工程師利用c言語(yǔ)編

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論