第一篇:2010北郵考研網研院 機試題
2010北郵考研網研院 機試題
(2010-04-19 16:38:15)
轉載 標簽:
北郵 網研 機試 雜談
第一題:查找 輸入數組長度 n 輸入數組 a[1...n] 輸入查找個數m 輸入查找數字b[1...m]
輸出 YES or NO 查找有則YES 否則NO
如(括號內容為注釋)輸入: 5(數組長度)1 5 2 4 3(數組)3(查找個數)2 5 6(查找具體數字)輸出: YES YES NO 第二題:查找第K小數
查找一個數組的第K小的數,注意同樣大小算一樣大 如 2 1 3 4 5 2 第三小數為3
如(括號內容為注釋)輸入: 6(數組長度n)2 1 3 5 2 2(數組)3(K 即為第三小數)輸出: 3
第三題:打牌
牌只有1到9,手里拿著已經排好序的牌a,對方出牌b,用程序判斷手中牌是否能夠壓過對方出牌 規則:出牌牌型有5種 [1]一張 如4 則5...9可壓過
[2]兩張 如44 則55,66,77,...,99可壓過 [3]三張 如444 規則如[2] [4]四張 如4444 規則如[2] [5]五張 牌型只有12345 23456 34567 45678 56789五個,后面的比前面的均大
壓過輸出YES 否則NO
如(括號內容為注釋)輸入:
12233445566677(手中牌)33(出牌)輸出: YES
第四題:樹 查找
簡單說就是一棵樹,輸出某一深度的所有節點,有則輸出這些節點,無則輸出EMPTY,具體描述得借助圖形比較好,懶得寫了,基本就是這個樣子的。
第二篇:2010年北郵光研院《光纖通信》專業筆試題
2010年北京郵電大學信息光子學與光通信研究院
《光纖通信》專業筆試題
一、填空題(共26分,每空2分)
1、光纖傳輸特性:___,___,___。
2、單模光纖三種色散:___, ___, ___;其中___色散導致單模光纖出現傳輸極限。(原話實在忘了,課本也沒在手里,意思表達不清楚,湊合看吧,看過書的人應該明白的,嘿嘿)
3、光纖通信系統的三大性能指標:___,___,___。
4、給出L、Pi、Po=0,計算α損耗系數___.5、(還有一個題想不起來了,總之填空應該拿滿分的)
二、選擇題(共24分,每題4分)
1、影響DWDM傳輸容量的因素有:(五個選項,不定項選擇,具體選項忘了~)
2、EDFA能放大那些波長的光:(選項略)
3、光檢測器,給出截止波長hv>Eg,問能檢測出那些波長的光。
4、單模光纖當波長大于lanmdaC(你懂的,這個希臘字母實在是找不到在哪)時截止,問那些波長的光能通過?
5、適合DwDm傳輸的標準?(答案應該是G.655)
6、光接收機的性能指標。
三、大題(計算+簡述,共50分)
計算題:
1、(5分)回波損耗,知Po,反射Pi,求α?
2、(10分)畫出WDM系統并闡述工作原理(感覺這不是計算題,下題同)
3、(10分)EDfA的三種泵浦結構并作簡單說明。
簡述題:
1、(10分)光纖傳輸特性對于光脈沖的影響。
2、(10分)光與物質的三種反應過程并寫出與之相對應的半導體器件。(寫到這忍不住抱怨句:這也忒簡單了吧,考填空正好~)
3、(5分)WDM中監控信道的作用及對波長的選擇。
09題型有填空,選擇,計算,問答。填空有四五道,選擇有四道題,諸如單模光纖中的三種色散類型,光纖通信系統的性能指標,損耗系數的計算,光發送機的性能指標等等。
計算加問答共6道題,如下:
1.DWDM系統中要求總功率不得高于17dBm,該系統共32個子信道,每個子信道功率相同,則每個子信道的功率不得高于多少?(記得lg2=0.3010的話,該題答案應該是1.95dBm)
2.EDFA的3種泵浦結構寫出一種
3.FTTH的實現方案
4.偏振膜色散的形成原因及其對通信系統性能的影響
5.抖動性能的定義及其對系統的影響
6.WDM系統中監控信道的作用及其對波長選擇的要求。
第三篇:2013北郵計算機網研院上機題
A 最值問題
Accept:210 Submit:633 Time Limit:1000MS Memory Limit:65536KB Description 給出N個數,求出這N個數中最大值和次大值。注意這里的次大值必須嚴格小于最大值。輸入保證N個數中至少存在兩個不同的數。
InputFormat 第一行為測試數據的組數T(T≤20)。請注意,任意兩組測試數據之間是相互獨立的。每組數據包括兩行:
第一行為一個整數N(1≤N≤1000)。
第二行為N個正整數,每個整數均不大于106。
OutputFormat 每組數據輸出兩個數,即N個數的最大值和次大值,中間用空格隔開。
SampleInput 2 5 1 2 3 4 5 4 2 2 2 3 SampleOutput 5 4 3 2
B 統計時間間隔
Accept:130 Submit:1132 Time Limit:1000MS Memory Limit:65536KB Description 給出兩個時間(24小時制),求第一個時間至少要經過多久才能到達第二個時間。給出的時間一定滿足的形式,其中x和y分別代表小時和分鐘。$0x24,0y 60。
InputFormat 第一行為數據組數T(1≤T≤50000)。
每組數據包括兩行,分別代表兩個時間。
OutputFormat 每組數據輸出一行,表示最少經過的分鐘數。SampleInput 2 7:00 7:00 7:00 8:00 SampleOutput 0 60
C 字符串轉換
Accept:78 Submit:471 Time Limit:1000MS Memory Limit:65536KB Description 我們將僅由若干個同一小寫字母構成的字符串稱之為簡單串,例如“aaaa”是一個簡單串,而“abcd”則不是簡單串。現在給你一個僅由小寫字母組成的字符串,你需要用最小的花費,將其轉換成一個簡單串?;ㄙM的計算規則如下:將a到z這26個小寫字母從左到右排成一排,則每個字母都有左右兩個鄰居,我們認為a的左鄰居是z,z的右鄰居是a。一個字母只能轉換成其相鄰的字母,轉換的花費為1。一個字母可以進行多次轉換,例如將a轉換成d,可以進行如下的步驟: a->b->c->d,花費為3。字符串的轉換花費為所有字母轉換花費之和。例如將字符串“abbbz”轉換成簡單串的最小花費為3,轉換后的結果為“bbbbb”。
InputFormat 第一行一個整數T(T≤100),表示測試數據的組數。每組測試數據只有一行,為僅含小寫字母的字符串,字符串長度不超過1000。
OutputFormat 對于每一組數據,輸出一個整數,表示將字符串轉換成簡單串的最小花費。
SampleInput 2 abbba abbac SampleOutput 2 3
D 文件系統
Accept:9 Submit:79 Time Limit:1000MS Memory Limit:65536KB Description 現在很多操作系統的文件系統都是基于樹形結構設計的。即一個目錄下可以有若干個目錄和文件,而每個目錄和文件都可以通過一條從根目錄出發的唯一路徑來唯一確定。我們希望你實現對這樣的一個文件系統的簡單管理。為了簡化問題,我們做出如下假設:
假設文件系統初始時只有一個根目錄root。
假設所有出現的文件和目錄的名字都是唯一的。即,不會有兩個相同名字的文件出現,不會有兩個相同名字的目錄出現,也不會有一個文件和一個目錄名字相同。
文件名字和目錄名字都是長度在1到20之間的字符串(包括1和20),且只由英文大寫字母、英文小寫字母、數字組成。大小寫字母之間不等效。你需要實現如下操作:
CREATEFILE FILENAME DIRNAME 這個操作的含義是:在DIRNAME的目錄下創建一個名字為FILENAME的文件。我們保證當出現這個操作時,DIRNAME是一個已經存在的目錄,而FILENAME這個名字是首次出現。
CREATEDIR DIRNAME1 DIRNAME2 這個操作的含義是:在DIRNAME2的目錄下創建一個名字為DIRNAME1的目錄。我們保證當出現這個操作時,DIRNAME2是一個已經存在的目錄,而DIRNAME1這個名字是首次出現。
LISTFILE DIRNAME 這個操作的含義是:按照創建的先后順序打印出DIRNAME目錄下的所有文件名字。我們保證當出現這個操作時,DIRNAME是一個已經存在的目錄.LISTDIR DIRNAME 這個操作的含義是:按照創建的先后順序打印出DIRNAME目錄下的所有目錄名字。我們保證當出現這個操作時,DIRNAME是一個已經存在的目錄 1.2.3.1.2.3.4.InputFormat 第一行有一個整數T,表示一共有T組數據需要你處理。請注意各組數據之間是相互獨立的。每當處理新的一組數據時,你都應當假設此時只有一個名字為root的根目錄存在。T的大小不超過20。
對于每組數據,第一行有一個整數N(0 OutputFormat 對于每個LISTFILE操作和LISTDIR操作,如果找到了X個文件(或目錄),你需要輸出X行,按照創建時間從早到晚的順序,每一行打印一個文件(或目錄)的名字。如果找到了0個文件(或目錄),就不要輸出任何東西。請注意不要輸出多余的空格和換行符。 SampleInput 2 8 CREATEFILE desktop root CREATEDIR DESKTOP root LISTFILE root LISTDIR DESKTOP CREATEFILE scr20130412 DESKTOP CREATEFILE scr20130411 DESKTOP CREATEFILE scr20130413 DESKTOP LISTFILE DESKTOP 5 LISTFILE root CREATEDIR webapp root CREATEDIR myweb webapp CREATEDIR MyWeb webapp LISTDIR webapp Sample Output desktop scr20130412 scr20130411 scr20130413 myweb MyWeb 一、閱讀理解(共1道小題,共25.0分)? William Henry Harrison, the ninth President of the United States, was born in a small town.As a boy, he was quiet and shy.In fact, he was so quiet that everyone thought he was stupid.Because of that, the people of the town liked to play jokes on him.“Here, William,” one of them would say.“Here is a nickel(五美分硬幣), and here is a dime(十美分硬幣).Which one do you want?” He always chose the nickel, and then they all laughed at him.Finally, his mother took him aside and said to him, “I know that you are a smart boy, but sometimes you let people think you are not so smart.Why do you always choose the nickels instead of the dime? Don't you know that a dime is worth much more than a nickel?” “Certainly, I know it,” William answered slowly.“But if I choose the dime, they won't play the trick on me any more.Then I won’t get any more nickels.” William Henry Harrison was born_____.? ? ? ? in a big city on a farm in the countryside in a small town People thought he was stupid because ______.? ? ? ? he did poorly at school he was so quiet he always asked foolish questions he was afraid of others Whenever people played tricks on him, he was asked to_____.? ? ? ? laugh at himself make faces choose between a nickel and a dime tell right from wrong His mother took him aside and asked why _____.? he always chose the nickel instead of the dime ? he didn’t know that a dime was worth more than a nickel ? people played the same trick on him ? he failed to let people know how smart he was We can infer from the story that William Henry Harrison was ______.? ? ? ? 試題分值:25.0 得分:[5, 5, 5, 5, 5] ? 提示:[1]D.細節題。本題問“William Henry Harrison出生于______?!敝行脑~是“was born”,答案在第一段的第一句,該句告訴我們William出生于一個小鎮,所以答案是D。 [2]B.細節題。本題問“人們認為他非常笨,這是因為_______?!敝行脑~是“thought he was stupid”,答案在第一段的最后一句,該句大意是“當他還是個孩子的時候,他不喜歡說話而且很害羞。實際上,他是如此的安靜以至于別人都認為他很笨”。據此可知答案是B。[3]C.細節題。本題問“每當人們想和他開玩笑的時候,人們就讓他_______?!敝行脑~是“played tricks on him”,答案在第二段和第三段,只不過第二段中出現的是“play jokes on him”,這兩個詞組意思相近。第二段大意是“就因為這個,所以人們喜歡開他的玩笑?!钡谌蔚拇笠馐恰坝腥藭f:‘過來,William。這里有一個5美分硬幣和一個10美分的硬幣。你想選擇哪一個?’”根據這兩段,我們可以知道答案是C。[4]A.細節題。本題問“他媽媽將他帶到一旁問他為什么_______?!贝鸢冈诘谖宥?,該段大意是“最后,他媽媽將他帶到一旁對他說道:‘我知道你是個聰明的孩子,但是有些時候你讓別人覺得你不是那么聰明。為什么你總是選擇5美分的硬幣而不選擇10美分的呢?難道你不知道10美分的硬幣比5美分的值錢嗎?’”據此可知答案是A。 [5]D.推斷題。本題問“從故事中我們可以推測出William Henry Harrison是______?!贝鸢冈谧詈笠欢?,該段大意是“William慢慢地回答道:‘我當然知道。但是,如果我選擇了10美分的硬幣,他們就不會再和我開玩笑了。這樣的話,我就再也得不到5美分的硬幣了。’”據此可知答案是D(聰明的)。 二、單項選擇題(共15道小題,共75.0分)? Many educators fear that an increase in the use of state exams will ___________a corresponding rise in cheating.? lead at ? result foolish naughty silent clever ? lead to ? consequent 知識第一部分 點: 學生答[C;] 案: 標準答 C; 案: 試題分得分: [5] 5.0 值: 該題選C,題目大意是“很多教育學家擔心,更多地利用州級考試將會導致作弊的相應增加。” 提示: lead to:導致 Smoking can lead to lung cancer.抽煙可能導致肺癌。 What if my auto-repair man devised questions ___________an intelligence test? ? ? ? ? with for to at 標準答 B; 案: 試題分得分: [5] 5.0 值: 該題選B,題目大意是“假定讓我的汽車修理師來為智力測驗設計題目將會怎么樣?” what if:如果??將會怎么樣 1.What if it is true? 如果這是真的又該如提示: 何呢? 2.What if he doesn′t agree? 如果他不同意該怎么辦呢? 3.What if he comes back now? 如果他現在回來怎么辦? In the test I scored 160 ___________a normal of 100.? at ? with ? against 知識第一部分 點: 學生答[B;] 案: ? in 知識第一部分 點: 學生答[C;] 案: 標準答 C; 案: 試題分得分: [5] 5.0 值: 該題選C,題目大意是“在標準得分為100的情況下,我得了160分?!?score:及物動詞 vt.1.(體育比賽中)得(分),記(分);使得分 提示: He only scored nine hundred marks.他只得九百分。 2.(考試等中)得(分)Mary scored the highest marks on the exam.瑪麗考試中得了個最高分。 Praise is particularly appreciated by those doing ___________ jobs.? ? ? ? routine rural racial rude 標準答 A; 案: 試題分得分: [5] 5.0 值: 該題選A,題目大意是“那些從事例行工作的人們特別懂得贊揚的意義?!?/p> routine:形容詞 a.日常的,例行的,常規的 提示: 1.a routine medical examination 常規體格檢查 2.Routine office jobs have no relish at all for me.我對坐辦公室那種刻板的工作毫無興趣。 I can live for two months ___________a good compliment.? by ? with ? on 知識第一部分 點: 學生答[A;] 案: ? at 知識第二部分 點: 學生答[C;] 案: 標準答 C; 案: 試題分得分: [5] 5.0 值: 該題選C,題目大意是“一句贊美的話我就可以活上兩個月。” live on:靠吃---生活,靠---維持生活 提示: 1.live on wild plants靠吃野菜生活 2.A panda lives on bamboo leaves.熊貓以吃竹葉為生。 Students in the last century read stories that taught ________ lessons.? ? ? ? moral more mortal morale 標準答 A; 案: 試題分得分: [5] 5.0 值: 該題選A,題目大意是“上個世紀的學生讀的都是些傳授道德標準的故事?!?moral: 形容詞 a.1.道德(上)的 提示: He refused the request on moral grounds.基于道德上的考慮,他拒絕了這個請求。2.講道德的,品性端正的 My grandmother was a very moral woman;she′d never allow cursing.我祖母是很講究道德的人;她從不允許詛咒。 His former secretary ________ him with sexual harassment.? blamed ? criticized 知識第二部分 點: 學生答[A;] 案: ? accused ? charged 知識第二部分 點: 學生答[D;] 案: 標準答 D; 案: 試題分得分: [5] 5.0 值: 該題選D,題目大意是“他從前的女秘書指控他性騷擾?!?/p> charge:及物動詞 vt.控告,指控 提示: 1.He was charged with stealing.他被控犯有偷竊行為。 2.The police charged him with car theft.警方以偷車罪指控他。 Six ________ ten people in Beijing have seen the movie Titanic.? ? ? ? out out off out of out to 標準答 C; 案: 試題分得分: [5] 5.0 值: 該題選C,題目大意是“在北京,十個人中有六個人已經看了電影《泰坦尼克號》” 提示: out of:from among其中,??之中 One person out of five the world is Chinese.世界五分之一的人是中國人。 All but Alice and I ________ going to the theatre this evening.? ? ? ? 知are be am is 知識第二部分 點: 學生答[C;] 案: 識第二部分 標準答 A; 案: 試題分得分: [5] 5.0 值: 該題選A,題目大意是“今晚除了愛麗絲和我,提示: 大家都去看戲了。” Everything _________ except salaries.? ? ? ? went went up went to went from 點: 學生答[A;] 案: 標準答 B; 案: 試題分得分: [5] 5.0 值: 該題選B,題目大意是“除了工資之外,所有都在漲價?!?/p> go up:rise;increase上升;增加 提示: 1.I see cigarettes are going up again.我發現香煙又漲價了。 2.Crime rate tends to go up if the economy collapses.經濟崩潰的時候犯罪率常上升。 The boy ___________ at the dinner party last Sunday and was sick.? ? ? ? overweight overload overate over and ate 知識第二部分 點: 學生答[B;] 案: 知識第二部分 點: 學生答[C;] 案: 標準答 C; 案: 試題分得分: [5] 5.0 值: 提示: 該題選C,題目大意是“男孩在上周日的晚宴上吃得過飽,于是病倒了?!?/p> overeat:暴食;吃得過量;吃撐 1.He is advised not to overeat.有人勸他不要吃得太多。 2.And skipping meals tends to make you overeat later.不吃飯會讓你有暴食的傾向。3.Generally, you shouldn′t overeat yourself before sleeping.一般說來睡覺之前你不能吃得過飽。 We all thought _________ a pity that you were unable to watch the game.? ? ? ? it which that what 標準答 A; 案: 試題分得分: [5] 5.0 值: 該題選A,題目大意是“你沒能觀看這場比賽,我們認為很遺憾?!?/p> 英語中會出現用it 作形式賓語,放在動詞后面,而將真正的賓語,賓語從句或作賓語的不定式置于句末的情況。又如: 1.People find it more and more difficult to get a job nowadays.人們發現當下找工作越來提示: 越難了。(不定式作賓語) 2.We all thought it a pity that you were unable to attend the party.我們為你不能參加這次聚會,而深感遺憾。(從句作賓語) 3.I regard it as important that everyone of us should be punctual.我們每個人都必須嚴格守時,我認為這一點很重要。(從句作賓語) _______ exchanges are an important part of cultural exchanges between two countries.? Previous ? Uneasy ? Academic 知識第二部分 點: 學生答[A;] 案: ? Divine 知識第二部分 點: 學生答[C;] 案: 標準答 C; 案: 試題分得分: [5] 5.0 值: 該題選C,題目大意是“學術交流是這兩個國家文化交流的重要部分?!?/p> academic:學院的;學術的;理論的 1.With my strong academic background, I am 提示: competent.依我良好的學術背景,我能勝任。 2.During the past four years I have had a good deal of academic experience in communications technology.四年來,我掌握了豐富的通信技術上的理論知識。 If you give up music, you’ll waste your _______.? ? ? ? comment talent diploma intent 標準答 B; 案: 試題分得分: [5] 5.0 值: 該題選B,題目大意是“如果你放棄音樂,你就是浪費了你的天賦?!?/p> 提示: talent:名詞 n.天才,天資 He had a talent for music.他有音樂天才。 Shops should not _______ defective goods on customers.? ? ? ? 知foster forge forsake foist 知識第二部分 點: 學生答[B;] 案: 識第二部分 點: 學生答[D;] 案: 標準答 D; 案: 試題分得分: [5] 5.0 值: 該題選D,題目大意是“商店不應該把劣質商品推銷給顧客?!?foist ? to:騙售 提示: The shopkeeper foisted a box of broken biscuits on the old lady.店主把一箱子碎餅干騙售給了那老婦人。 電子工程學院 ASIC專業實驗報告 班級: 姓名: 學號: 班內序號: 第一部分 語言級仿真 LAB 1:簡單的組合邏輯設計一、二、實驗目的 實驗原理 掌握基本組合邏輯電路的實現方法。 本實驗中描述的是一個可綜合的二選一開關,它的功能是當sel = 0時,給出out = a,否則給出結果out = b。在Verilog HDL中,描述組合邏輯時常使用assign結構。equal=(a==b)?1:0是一種在組合邏輯實現分支判斷時常用的格式。parameter定義的size參數決定位寬。測試模塊用于檢測模塊設計的是否正確,它給出模塊的輸入信號,觀察模塊的內部信號和輸出信號。 三、源代碼 mux.v module scale_mux(out,sel,b,a);parameter size=1;output[size-1:0] out;input[size-1:0]b,a;input sel;assign out =(!sel)?a: (sel)?b: {size{1'bx}};endmodule mux_test.v `define width 8 `timescale 1 ns/1 ns module mux_test; reg[`width:1]a,b; wire[`width:1]out; reg sel; scale_mux#(`width)m1(.out(out),.sel(sel),.b(b),.a(a)); initial begin $monitor($stime,“sel=%b a=%b b=%b out=%b”,sel,a,b,out); $dumpvars(2,mux_test); sel=0;b={`width{1'b0}};a={`width{1'b1}}; #5sel=0;b={`width{1'b1}};a={`width{1'b0}}; #5sel=1;b={`width{1'b0}};a={`width{1'b1}}; #5sel=1;b={`width{1'b1}};a={`width{1'b0}}; #5 $finish; end endmodule 四、仿真結果與波形 LAB 2:簡單時序邏輯電路的設計一、二、實驗目的 實驗原理 掌握基本時序邏輯電路的實現。 在Verilog HDL中,相對于組合邏輯電路,時序邏輯電路也有規定的表述方式。在可綜合的Verilog HDL模型中,我們常使用always塊和@(posedge clk)或@(negedge clk)的結構來表述時序邏輯。 在always塊中,被賦值的信號都必須定義為reg型,這是由時序邏輯電路的特點所決定的對于reg型數據,如果未對它進行賦值,仿真工具會認為它是不定態。為了正確地觀察到仿真結果,在可綜合的模塊中我們通常定義一個復位信號rst-,當它為低電平時對電路中的寄存器進行復位。 三、源代碼 counter.v `timescale 1 ns/100 ps module counter(cnt,clk,data,rst_,load);output[4:0]cnt;input [4:0]data;input clk;input rst_;input load;reg [4:0]cnt; always@(posedge clk or negedge rst_) if(!rst_) #1.2 cnt<=0; else if(load) cnt<=#3 data; else cnt<=#4 cnt + 1; endmodule counter_test.v `timescale 1 ns/1 ns module counter_test; wire[4:0]cnt; reg [4:0]data; reg rst_; reg load; reg clk; counter c1 (.cnt(cnt),.clk(clk),.data(data),.rst_(rst_),.load(load)); initial begin clk=0; forever begin #10 clk=1'b1; #10 clk=1'b0; end end initial begin $timeformat(-9,1,“ns”,9); $monitor(“time=%t,data=%h,clk=%b,rst_=%b,load=%b,cnt=%b”,$stime,data,clk,rst_,load,cnt); $dumpvars(2,counter_test); end task expect;input [4:0]expects; if(cnt!==expects)begin $display(“At time %t cnt is %b and should be %b”,$time,cnt,expects); $display(“TEST FAILED”); $finish; end endtask initial begin @(negedge clk) {rst_,load,data}=7'b0_X_XXXXX;@(negedge clk)expect(5'h00); {rst_,load,data}=7'b1_1_11101;@(negedge clk)expect(5'h1D); {rst_,load,data}=7'b1_0_11101; repeat(5)@(negedge clk); expect(5'h02); {rst_,load,data}=7'b1_1_11111;@(negedge clk)expect(5'h1F); {rst_,load,data}=7'b0_X_XXXXX;@(negedge clk)expect(5'h00); $display(“TEST PASSED”); $finish; end endmodule 四、仿真結果與波形 五、思考題 該電路中,rst-是同步還是異步清零端? 在counter.v的always塊中reset沒有等時鐘,而是直接清零。所以是異步清零端。 LAB 3:簡單時序邏輯電路的設計一、二、實驗目的 實驗原理 使用預定義的庫元件來設計八位寄存器。 八位寄存器中,每一位寄存器由一個二選一MUX和一個觸發器dffr組成,當load=1,裝載數據;當load=0,寄存器保持。對于處理重復的電路,可用數組條用的方式,使電路描述清晰、簡潔。 三、源代碼 clock.v `timescale 1 ns /1 ns module clock(clk);reg clk;output clk;initial begin clk=0;forever begin #10 clk=1'b1;#10 clk=1'b0;end end endmodule mux及dffr模塊調用代碼 mux mux7(.out(n1[7]),.sel(load),.b(data[7]),.a(out[7]));dffr dffr7(.q(out[7]),.d(n1[7]),.clk(clk),.rst_(rst_));mux mux6(.out(n1[6]),.sel(load),.b(data[6]),.a(out[6]));dffr dffr6(.q(out[6]),.d(n1[6]),.clk(clk),.rst_(rst_));mux mux5(.out(n1[5]),.sel(load),.b(data[5]),.a(out[5]));dffr dffr5(.q(out[5]),.d(n1[5]),.clk(clk),.rst_(rst_));mux mux4(.out(n1[4]),.sel(load),.b(data[4]),.a(out[4]));dffr dffr4(.q(out[4]),.d(n1[4]),.clk(clk),.rst_(rst_)); mux mux3(.out(n1[3]),.sel(load),.b(data[3]),.a(out[3]));dffr dffr3(.q(out[3]),.d(n1[3]),.clk(clk),.rst_(rst_));mux mux2(.out(n1[2]),.sel(load),.b(data[2]),.a(out[2]));dffr dffr2(.q(out[2]),.d(n1[2]),.clk(clk),.rst_(rst_));mux mux1(.out(n1[1]),.sel(load),.b(data[1]),.a(out[1]));dffr dffr1(.q(out[1]),.d(n1[1]),.clk(clk),.rst_(rst_));mux mux0(.out(n1[0]),.sel(load),.b(data[0]),.a(out[0]));dffr dffr0(.q(out[0]),.d(n1[0]),.clk(clk),.rst_(rst_)); 例化寄存器 register r1(.data(data),.out(out),.load(load),.clk(clk),.rst_(rst_));例化時鐘 clock c1(.clk(clk)); 添加檢測信號 initial begin $timeformat(-9,1,“ns”,9);$monitor(“time=%t,clk=%b,data=%h,load=%b,out=%h”, $stime,clk,data,load,out);$dumpvars(2,register_test);end 四、仿真結果與波形 LAB 4:用always塊實現較復雜的組合邏輯電路 一、實驗目的 掌握用always實現組合邏輯電路的方法; 了解assign與always兩種組合邏輯電路實現方法之間的區別。 二、實驗原理 僅使用assign結構來實現組合邏輯電路,在設計中會發現很多地方顯得冗長且效率低下。適當地使用always來設計組合邏輯,會更具實效。 本實驗描述的是一個簡單的ALU指令譯碼電路的設計示例。它通過對指令的判斷,對輸入數據執行相應的操作,包括加、減、或和傳數據,并且無論是指令作用的數據還是指令本身發生變化,結果都要做出及時的反應。 示例中使用了電平敏感的always塊,電平敏感的觸發條件是指在@后括號內電平列表的任何一個電平發生變化就能觸發always塊的動作,并且運用了case結構來進行分支判斷。 在always中適當運用default(在case結構中)和else(子if…else結構中),通??梢跃C合為純組合邏輯,盡管被賦值的變量一定要定義為reg型。如果不使用default或else對缺省項進行說明,易產生意想不到的鎖存器。 三、源代碼 電路描述 always@(opcode or data or accum)begin if(accum==8'b00000000)#1.2 zero=1;else #1.2 zero=0; case(opcode)PASS0: #3.5 out =accum;PASS1: #3.5 out =accum;ADD: #3.5 out = data + accum;AND: #3.5 out =data&accum;XOR: #3.5 out =data^accum;PASSD: #3.5 out=data;PASS6:#3.5 out=accum;PASS7:#3.5 out=accum;default:#3.5 out=8'bx;endcase end 四、仿真結果與波形 LAB 5:存儲器電路的設計一、二、實驗目的 實驗原理 設計和測試存儲器電路。 本實驗中,設計一個模塊名為mem的存儲器仿真模型,該存儲器具有雙線數據總線及異步處理功能。由于數據是雙向的,所以要注意,對memory的讀寫在時序上要錯開。 三、源代碼 自行添加的代碼 assign data=(read)?memory[addr]:8'hZ; always @(posedge write)begin memory[addr]<=data[7:0];end 四、仿真結果與波形 LAB 6:設計時序邏輯時采用阻塞賦值與非阻塞賦值的區別 一、實驗目的 明確掌握阻塞賦值與非阻塞賦值的概念和區別; 了解阻塞賦值的使用情況。 二、實驗原理 在always塊中,阻塞賦值可以理解為賦值語句是順序執行的,而非阻塞賦值可以理解為并發執行的。實際時序邏輯設計中,一般情況下非阻塞賦值語句被更多的使用,有時為了在同一周期實現相互關聯的操作,也使用阻塞賦值語句。 三、源代碼 blocking.v `timescale 1 ns/ 100 ps module blocking(clk,a,b,c); output[3:0]b,c; input [3:0]a; input clk; reg [3:0]b,c; always@(posedge clk) begin b =a; c =b; $display(“Blocking: a=%d,b=%d,c=%d.”,a,b,c); end endmodule non_blocking.v `timescale 1 ns/ 100 ps module non_blocking(clk,a,b,c); output[3:0] b,c;input[3:0] a;input clk;reg [3:0]b,c;always @(posedge clk)begin b<=a;c<=b;$display(“Non_blocking:a=%d,b=%d,c=%d”,a,b,c);end endmodule compareTop.v `timescale 1 ns/ 100 ps module compareTop;wire [3:0] b1,c1,b2,c2;reg[3:0]a;reg clk;initial begin clk=0;forever #50 clk=~clk;end initial $dumpvars(2,compareTop);initial begin a=4'h3;$display(“_______________________________”);# 100 a =4'h7;$display(“_______________________________”);# 100 a =4'hf;$display(“_______________________________”);# 100 a =4'ha;$display(“_______________________________”);# 100 a =4'h2;$display(“_______________________________”);# 100 $display(“_______________________________”);$finish;end non_blocking nonblocking(clk,a,b2,c2);blocking blocking(clk,a,b1,c1);endmodule 四、仿真結果與波形 LAB 7:利用有限狀態機進行復雜時序邏輯的設計一、二、實驗目的 實驗原理 掌握利用有限狀態機(FSM)實現復雜時序邏輯的方法。 控制器是CPU的控制核心,用于產生一系列的控制信號,啟動或停止某些部件。CPU何時進行讀指令,何時進行RAM和I/O端口的讀寫操作等,都由控制器來控制。 三、源代碼 補充代碼 nexstate<=state+1'h01;case(state)1:begin sel=1;rd=0;ld_ir=0;inc_pc=0;halt=0;ld_pc=0;data_e=0;ld_ac=0;wr=0;end 2:begin sel=1;rd=1;ld_ir=0;inc_pc=0;halt=0;ld_pc=0;data_e=0;ld_ac=0;wr=0;end 3:begin sel=1;rd=1;ld_ir=1;inc_pc=0;halt=0;ld_pc=0;data_e=0;ld_ac=0;wr=0;end 4:begin sel=1;rd=1;ld_ir=1;inc_pc=0;halt=0;ld_pc=0;data_e=0;ld_ac=0;wr=0;end 5:begin sel=0;rd=0;ld_ir=0;inc_pc=1;ld_pc=0;data_e=0;ld_ac=0;wr=0;if(opcode==`HLT)halt=1;end 6:begin sel=0;rd=alu_op;ld_ir=0;inc_pc=0;halt=0;ld_pc=0;data_e=0;ld_ac=0;wr=0;end 7:begin sel=0;rd=alu_op;ld_ir=0;halt=0;data_e=!alu_op;ld_ac=0;wr=0;if(opcode==`SKZ)inc_pc<=zero;if(opcode==`JMP)ld_pc=1;end 0:begin sel=0;rd=alu_op;ld_ir=0;halt=0;data_e=!alu_op;ld_ac=alu_op;inc_pc=(opcode==`SKZ)&zero||(opcode==`JMP);if(opcode==`JMP)ld_pc=1;if(opcode==`STO)wr=1;end //default:begin sel=1'bZ;rd=1'bZ;ld_ir=1'bZ;inc_pc=1'bZ;halt=1'bZ;ld_pc=1'bZ;data_e=1'bZ;ld_ac=1'bZ;wr=1'bZ;end endcase end control_test.v /***************************** * TEST BENCH FOR CONTROLLER * *****************************/ `timescale 1 ns / 1 ns module control_test; reg [8:0] response [0:127]; reg [3:0] stimulus [0:15]; reg [2:0] opcode; reg clk; reg rst_; reg zero; integer i,j; reg[(3*8):1] mnemonic; // Instantiate controller control c1(rd , wr , ld_ir , ld_ac , ld_pc , inc_pc , halt , data_e , sel , opcode , zero , clk , rst_); // Define clock initial begin clk = 1; forever begin #10 clk = 0; #10 clk = 1; end end // Generate mnemonic for debugging purposes always @(opcode) begin case(opcode) 3'h0 : mnemonic = “HLT”; 3'h1 : mnemonic = “SKZ”; 3'h2 : mnemonic = “ADD”; 3'h3 : mnemonic = “AND”; 3'h4 : mnemonic = “XOR”; 3'h5 : mnemonic = “LDA”; 3'h6 : mnemonic = “STO”; 3'h7 : mnemonic = “JMP”; default : mnemonic = “???”; endcase end // Monitor signals initial begin $timeformat(-9, 1, “ ns”, 9); $display(“ time rd wr ld_ir ld_ac ld_pc inc_pc halt data_e sel opcode zero state”); $display(“--------------------------------------------------------------”);// $shm_open(“waves.shm”);// $shm_probe(“A”);// $shm_probe(c1.state); end // Apply stimulus initial begin $readmemb(“stimulus.pat”, stimulus); rst_=1; @(negedge clk)rst_ = 0; @(negedge clk)rst_ = 1; for(i=0;i<=15;i=i+1) @(posedge ld_ir) @(negedge clk) { opcode, zero } = stimulus[i]; end // Check response initial begin $readmemb(“response.pat”, response); @(posedge rst_) for(j=0;j<=127;j=j+1) @(negedge clk) begin $display(“%t %b %b %b %b %b %b %b %b %b %b %b”,$time,rd,wr,ld_ir,ld_ac,ld_pc,inc_pc,halt,data_e,sel,opcode,zero,c1.state); if({rd,wr,ld_ir,ld_ac,ld_pc,inc_pc,halt,data_e,sel}!== response[j]) begin : blk reg [8:0] r; r = response[j]; $display("ERRORTEST1 PASSED! 111_00000 // 18 JMP BEGIN //run test again @1A 00000000 // 1A DATA_1: //constant 00(hex) 11111111 // 1B DATA_2: //constant FF(hex) 10101010 // 1C TEMP: //variableTEST2 PASSED! 111_00000 // 11 JMP BEGIN //run test again @1A 00000001 // 1A DATA_1: //constant 1(hex) 10101010 // 1B DATA_2: //constant AA(hex) 11111111 // 1C DATA_3: //constant FF(hex) 00000000 // 1D TEMP: CPUtest3.dat //opcode_operand // addr assembly code //--------------//------------------------- 111_00011 // 00 JMP LOOP //jump to the address of LOOP @03 101_11011 // 03 LOOP: LDA FN2 //load value in FN2 into accum 110_11100 // 04 STO TEMP //store accumulator in TEMP 010_11010 // 05 ADD FN1 //add value in FN1 to accumulator 110_11011 // 06 STO FN2 //store result in FN2 101_11100 // 07 LDA TEMP //load TEMP into the accumulator 110_11010 // 08 STO FN1 //store accumulator in FN1 100_11101 // 09 XOR LIMIT //compare accumulator to LIMIT 001_00000 // 0A SKZ //if accum = 0, skip to DONE 111_00011 // 0B JMP LOOP //jump to address of LOOP 000_00000 // 0C DONE: HLT //end of program 101_11111 // 0D AGAIN: LDA ONE 110_11010 // 0E STO FN1 101_11110 // 0F LDA ZERO 110_11011 // 10 STO FN2 111_00011 // 11 JMP LOOP //jump to address of LOOP @1A 00000001 // 1A FN1: //variablestores 2nd Fib.No.00000000 // 1C TEMP: //temporary variable 10010000 // 1D LIMIT: //constant 144stores 1st Fib.No.00000101 // 1B data2: //5 variablemax value 00000110 // 1E LIMIT: // 6 constant 1 11111111 // 1F AND1: //FF and 四、仿真結果與波形 第二部分 電路綜合一、二、三、四、實驗目的 實驗內容 源代碼 門級電路仿真結果與波形 掌握邏輯綜合的概念和流程,熟悉采用Design Compiler進行邏輯綜合的基本方法。采用SYNOPSYS公司的綜合工具Design Compiler對實驗7的control.v做綜合。與實驗指導書中相同。 五、思考題 1.control_pad.v文件是verilog語言及的描述還是結構化的描述? 是結構化的描述。 2.control_pad.sdf文件中,對觸發器的延遲包括哪些信息? 包括對邏輯單元和管腳的上升/下降時延的最大值、最小值和典型值。 第三部分 版圖設計一、二、三、四、實驗目的 實驗內容 源代碼 仿真結果與波形 掌握版圖設計的基本概念和流程,熟悉采用Sysnopsys ICC工具進行版圖設計的方法。對電路綜合輸出的門級網表control_pad.v進行布局布線。與實驗指導書中相同。布局規劃后結果 未產生core ring和mesh前 產生core ring和mesh后 電源線和電影PAD連接后 filler PAD填充后 布局后結果 時鐘樹綜合后結果 布線后結果 寄生參數的導出和后仿 五、思考題 1.簡述ICC在design setup階段的主要工作。 創建設計庫,讀取網表文件并創建設計單元,提供并檢查時間約束,檢查時鐘。在對之前的數據與信息進行讀取與檢查后保存設計單元。2.為什么要填充filler pad? filler pad把分散的pad單元連接起來,把pad I/O區域供電連成一個整體。使它們得到持續供電并提高ESD保護能力。3.derive_pg_connection的作用是什么? 描述有關電源連接的信息。4.簡述floorplan的主要任務。 對芯片大小、輸入輸出單元、宏模塊進行規劃,對電源網絡進行設計。5.簡述place階段的主要任務。 對電路中的延時進行估計與分析,模擬時鐘樹的影響,按照時序要求,對標準化單元進行布局。 6.簡述CTS的主要步驟。 設置時鐘樹公共選項;綜合時鐘樹;重新連接掃描鏈;使能傳播時鐘;Post-CTS布局優化;優化時鐘偏移;優化時序。 實驗總結 經過數周的ASIC專業實驗,我對芯片設計流程、Verilog HDL語言、Linux基本指令和Vi文本編輯器有了基本的了解。雖然之前對芯片設計、VHDL一無所知,但通過實驗初步熟悉了ASIC的體系結構和VHDL的基本語法,對電路中時鐘、寄生參數、元件布局帶來的影響也有了了解。我在實驗中也遇到了許多問題,但我在老師、助教、同學的幫助下解決了這些問題,也有了更多收獲。通過這次ASIC專業實驗,我加深了對本專業的認識。我會繼續努力成為合格的電子人。第四篇:北郵網院英語答案
第五篇:北郵電子院專業實驗報告