SOC設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第1頁
SOC設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第2頁
SOC設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第3頁
SOC設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第4頁
SOC設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩52頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、西北工業(yè)大學(xué)SOC設(shè)計(jì)實(shí)踐實(shí)驗(yàn)報(bào)告學(xué) 院: 軟件與微電子學(xué)院 學(xué)號(hào): 姓名: 專 業(yè): 時(shí) 間: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)一、編寫一個(gè)自動(dòng)售貨機(jī)Verilog HDL模型一、 題目描述編寫一個(gè)自動(dòng)售貨機(jī)Verilog HDL模型,(1)售貨機(jī)出售15分的飲料。(2)投幣器只接受5分和1角硬幣。(3)必須提供適當(dāng)數(shù)目的零錢,投幣器不找錢。二、 實(shí)驗(yàn)內(nèi)容1) 定義狀態(tài),并畫出狀態(tài)轉(zhuǎn)換圖,解釋設(shè)計(jì)思路;答:我在設(shè)計(jì)本題所要求的售貨機(jī)時(shí)使用了4個(gè)狀態(tài),分別為start(00),st1(01),st2(10),st3(11)其中在第三個(gè)狀態(tài)是輸出out為1,其他的三個(gè)狀態(tài)輸出為0。狀態(tài)轉(zhuǎn)換圖如下所示: star

2、t St3 St1 St2Five=1ten=1Five=1ten=1ten=1Five=1 其中狀態(tài)機(jī)在跳到st3時(shí),由st3直接跳的start狀態(tài)這使得out只在投幣后的一個(gè)時(shí)鐘周期處于高電平而不會(huì)長期處于高電平的狀態(tài),這與現(xiàn)實(shí)的只輸出一瓶飲料的結(jié)果不相符。2) 使用Verilog語言完成設(shè)計(jì);解:自動(dòng)售貨機(jī)的verilog代碼如下所示:module AUTOSEL(five,ten,clk,rst,out);input ten,five;input clk;input rst;output out;wire out;reg 1:0state;parameter st0=2'b00

3、, st1=2'b01, st2=2'b10, st3=2'b11;always(posedge clk or negedge rst)begin if(rst=0) begin state<=st0; end else begin case(state) st0: begin if(five=1) begin state<=st1; end else begin if(ten=1) begin state<=st2; end else begin state<=st0; end end end st1: begin if(five=1) beg

4、in state<=st2; end else begin if(ten=1) begin state<=st3; end else begin state<=st1; end end end st2: begin if(five=1) begin state<=st3; end else begin if(ten=1) begin state<=st3; end else begin state<=st2; end end end st3: begin state<=st0; end default: begin state<=st0; end

5、 endcase end endassign out=(state=st3)?1:0;endmodule3) 編寫testbench,并使用Synopsys VCS進(jìn)行仿真;答:testbench測(cè)試代碼如下:module testbench; reg clk,rst_n; reg five_cents,ten_cents; wire soda_out; always #1 clk=clk; initial begin clk=0; five_cents=0; ten_cents=0; rst_n=1; #10 rst_n=0; #10 rst_n=1; /1三個(gè)五分的 #10 five_ce

6、nts=1; #2 five_cents=0; #10 five_cents=1; #2 five_cents=0; #10 five_cents=1; #2 five_cents=0; /2一個(gè)五分,一個(gè)十分 #20 five_cents=1; #2 five_cents=0; #10 ten_cents=1; #2 ten_cents=0; /3兩個(gè)十分 #20 ten_cents=1; #2 ten_cents=0; #10 ten_cents=1; #2 ten_cents=0; /4一個(gè)十分,一個(gè)五分 #20 ten_cents=1; #2 ten_cents=0; #10 five

7、_cents=1; #2 five_cents=0; /5兩個(gè)五分,一個(gè)十分 #20 five_cents=1; #2 five_cents=0; #10 five_cents=1; #2 five_cents=0; #10 ten_cents=1; #2 ten_cents=0; #10 $stop; end AUTOSEL AUTOSEL(five_cents,ten_cents,clk,rst_n,soda_out);Endmodule測(cè)試波形圖如下所示:Autosel-vcs仿真波形 最下邊一行代表的是投5分,倒數(shù)第二行代表的是復(fù)位信號(hào),第三行是時(shí)鐘信號(hào),第二行是投10分,由圖可知,在

8、投3個(gè)5分,1個(gè)5分、1個(gè)10分,兩個(gè)10分,1個(gè)10分、1個(gè)5分,2個(gè)5分、1個(gè)10分都可使輸出信號(hào)為1,滿足題意要求。4) 使用Synopsys DC進(jìn)行綜合。答:autosel.con約束文件如下:#Constrain# #reset_designcreate_clock -period 490.2 get_ports clk#創(chuàng)建頻率為2.04MHz的時(shí)鐘信號(hào)set_clock_latency -source -max 10 get_clocks clk set_clock_latency -max 10 get_clocks clkset_clock_uncertainty -set

9、up 20 get_clocks clkset_clock_transition 10 get_clocks clkset_input_delay -max 60 -clock clk get_ports tenset_input_delay -max 60 -clock clk get_ports fiveset_driving_cell -lib_cell bufbd7 all_inputs set_output_delay -max 80 -clock clk get_ports outset_load load_of cb13fs120_tsmc_max/bufbd7/I get_po

10、rts outset_max_area 10000DC綜合腳本文件dc.tcl如下:#run script#printvar target_library printvar link_library check_library check_tlu_plus_filesread_verilog ./rtl/autosel.v#讀文件Link#連接到目標(biāo)庫check_design#檢測(cè)設(shè)計(jì)是否由問題source ./scripts/autosel.con#加上約束文件check_timing#檢測(cè)時(shí)序compile_ultra -scan -retime#對(duì)文件進(jìn)行編譯redirect -tee

11、-file rc.rpt report_constraint -allredirect -tee -file rt.rpt report_timingredirect -tee -file ra.rpt report_area#產(chǎn)生各種約束的報(bào)告write -f ddc -hier -out autosel.ddc#生成最后的.ddc文件產(chǎn)生的rc.rpt文件:Information: Updating design information. (UID-85) *Report : constraint -all_violatorsDesign : AUTOSELVersion: G-2012.

12、06-SP4Date : Tue May 20 20:15:05 2014*This design has no violated constraints.1產(chǎn)生的rt.rpt文件:*Report : timing -path full -delay max -max_paths 1Design : AUTOSELVersion: G-2012.06-SP4Date : Tue May 20 20:15:05 2014* * Some/all delay information is back-annotated.Operating Conditions: cb13fs120_tsmc_max

13、 Library: cb13fs120_tsmc_maxWire Load Model Mode: Inactive. Startpoint: state_reg0 (rising edge-triggered flip-flop clocked by clk) Endpoint: out (output port clocked by clk) Path Group: clk Path Type: max Point Incr Path - clock clk (rise edge) 0.00 0.00 clock network delay (ideal) 20.00 20.00 stat

14、e_reg0/CP (sdcrb1) 0.00 20.00 r state_reg0/Q (sdcrb1) 1.23 21.23 r U15/Z (an02d1) 0.14 * 21.37 r out (out) 0.00 * 21.37 r data arrival time 21.37 clock clk (rise edge) 490.20 490.20 clock network delay (ideal) 20.00 510.20 clock uncertainty -20.00 490.20 output external delay -80.00 410.20 data requ

15、ired time 410.20 - data required time 410.20 data arrival time -21.37 - slack (MET) 388.83 左側(cè)一列是每一項(xiàng)計(jì)劃所用的時(shí)間,右側(cè)一列是到目前所用的總時(shí)間,而且我們可以看出來實(shí)際的到達(dá)時(shí)間遠(yuǎn)遠(yuǎn)小于要求的時(shí)間,因此時(shí)序方面是滿足設(shè)計(jì)要求的。1產(chǎn)生的ra.rpt文件: *Report : areaDesign : AUTOSELVersion: G-2012.06-SP4Date : Tue May 20 20:15:05 2014*Library(s) Used: cb13fs120_tsmc_max (Fi

16、le: /cad/share/ref/libs/mw_lib/sc/LM/sc_max.db)Number of ports: 5Number of nets: 15Number of cells: 8Number of combinational cells: 6Number of sequential cells: 2Number of macros: 0Number of buf/inv: 0Number of references: 6Combinational area: 10.000000Buf/Inv area: 0.000000Noncombinational area: 15

17、.750000Net Interconnect area: undefined (Wire load has zero net area)Total cell area: 25.750000Total area: undefined1組合邏輯電路所用的面積為10um2,非組合邏輯所用面積為15.75um,因此總的面積為25.75um2。最終的綜合電路圖:Autosel dc 綜合電路三、 實(shí)驗(yàn)報(bào)告要求1) 設(shè)計(jì)思路,狀態(tài)定義,轉(zhuǎn)臺(tái)轉(zhuǎn)換圖。2) 使用Verilog HDL完成設(shè)計(jì)。3) 編寫testbench。4) VCS完成仿真,對(duì)仿真結(jié)果進(jìn)行分析。5) 編寫Synopsys DC綜合腳本文件

18、dc.tcl以及約束文件autosel.con。6) 使用Synopsys DC進(jìn)行綜合,給出綜合后的報(bào)告,包括rc.rpt,rt.rpt,ra.rpt,并做必要說明。7) 綜合后的電路圖。四、 分析與討論 在做本次試驗(yàn)時(shí),由于剛開始使用的投幣信號(hào)的脈沖較寬,使得輸出信號(hào)在時(shí)輸出信號(hào)有效的最后一個(gè)信號(hào)為高時(shí),狀態(tài)發(fā)生了連續(xù)的跳轉(zhuǎn),最后的輸出信號(hào)也發(fā)生了迅速的變化,考慮時(shí)序之后,使用單周期脈沖的輸入信號(hào)使得輸出信號(hào)在下一個(gè)周期有效,而在過一個(gè)周期由于此時(shí)輸入信號(hào)無效,使得狀態(tài)不再改變而使得輸出信號(hào)也只有在一個(gè)周期內(nèi)為高電平,從而滿足了要求。 此外,在剛開始設(shè)計(jì)時(shí)由于對(duì)狀態(tài)機(jī)的編寫規(guī)范不清楚,使用

19、了ten和five作為always語句的觸發(fā)條件,雖然可以仿真出波形,但是由于不符合dc綜合的規(guī)范,使得在dc時(shí)出現(xiàn)了“將CLK信號(hào)作為輸入信號(hào)”的錯(cuò)誤,狀態(tài)機(jī)的下周期邏輯只能使用clk作為觸發(fā)條件。五、 教師評(píng)語簽名:日期:成績(jī) 實(shí)驗(yàn)二、設(shè)計(jì)PCM30基群幀同步電路一、 題目描述設(shè)計(jì)PCM30基群幀同步電路,該P(yáng)CM30機(jī)群系統(tǒng)結(jié)構(gòu)如下:定時(shí)電路同步搜索DATACLKFLOSS輸入輸出信號(hào)說明:DATA :輸入串行碼流,速率為2.04Mb/S;CLK :輸入時(shí)鐘,頻率為2.04MHz;/FLOSS :輸出失步信號(hào),低電平有效。電路功能說明:1輸入碼流DATA,速率為2.04Mb/S;每幀25

20、6bit,其中前8bit為幀同步碼;偶數(shù)幀的幀同步碼為10011011,奇數(shù)幀的幀同步碼為110XXXXX(X為任意值)。2系統(tǒng)初始狀態(tài)為失步態(tài),失步信號(hào)FLOSS輸出低電平,電路在輸入碼流里逐比特搜尋同步碼,當(dāng)搜尋到第一個(gè)偶幀同步碼后,電路轉(zhuǎn)為逐幀搜尋,當(dāng)連續(xù)三幀均正確地搜尋到同步碼后,系統(tǒng)狀態(tài)轉(zhuǎn)為同步態(tài),失步信號(hào)輸出高電平;否則電路重新進(jìn)入逐比特搜尋狀態(tài)。3系統(tǒng)處于同步態(tài)后,當(dāng)連續(xù)四幀檢出的同步碼均錯(cuò)誤,則系統(tǒng)轉(zhuǎn)為失步態(tài),失電路時(shí)序說明:1) 輸入信號(hào)DATA與CLK的時(shí)序關(guān)系2) 同步過程時(shí)序與DATA的幀結(jié)構(gòu)二、 實(shí)驗(yàn)內(nèi)容1) 定義狀態(tài),并畫出狀態(tài)轉(zhuǎn)換圖,解釋設(shè)計(jì)思路答:為了實(shí)現(xiàn)pcm

21、30的功能,我的分析思路如下:首先,還沒有進(jìn)入幀同步狀態(tài)時(shí),是位尋址狀態(tài)依次為bit0,bit1,bit2,bit3,bit4,bit5,bit6,bit7;當(dāng)滿足了一次偶校驗(yàn)之后,要進(jìn)行空248位的處理,這個(gè)狀態(tài)可以用bitblank來表示;再次進(jìn)行一次奇校驗(yàn)用oddcheck0,oddcheck1,oddcheck2三個(gè)狀態(tài)來處理;奇校驗(yàn)完成進(jìn)入oddblank來表示空缺253位;在此進(jìn)行一次偶校驗(yàn)用evencheck0,evencheck1,evencheck2,evencheck3,evencheck4,evencheck5,evencheck6,evencheck7來表示,通過后使f

22、loss=1;如果通過了偶校驗(yàn)則進(jìn)入evenblank狀態(tài)來使pcm30空缺248位,此時(shí)進(jìn)入幀校驗(yàn)的奇校驗(yàn);幀校驗(yàn)的奇校驗(yàn)使用三個(gè)狀態(tài)來完成,分別為:oddhold0,oddhold1,oddhold2來校驗(yàn)奇幀的1、2、3位;奇校驗(yàn)可能產(chǎn)生不同的結(jié)果,例如在0,1,2位產(chǎn)生不符合和符合一共4種情況,這樣一來就不能只空固定的位數(shù)了,因?yàn)榧偃缭?位就不符合的話,在0位就跳出了,這樣需要跳過255位,與之類似,1位不符合要跳254位,而3為符合于不符合都是要跳過253位的,因此應(yīng)該跳的位數(shù)隨著不同的情況來變化,需要有跳255,254,253位狀態(tài)oddblank0,oddblank1和oddbl

23、ank2的分別對(duì)應(yīng)于三個(gè)奇校驗(yàn)的狀態(tài)oddhold0,oddhold1,oddhold2;oddblank0,oddblank1和oddblank2結(jié)束后的狀態(tài)應(yīng)該跳到偶校驗(yàn)的狀態(tài)中,使用8個(gè)狀態(tài)來完成,分別為:evenhold0,evenhold1,evenhold2,evenhold3,evenhold4,evenhold5,evenhold6,evenhold7;前7個(gè)狀態(tài)不滿足或者第8個(gè)狀態(tài)結(jié)束分別跳轉(zhuǎn)到evenblank0,evenblank1,evenblank2,evenblank3,evenblank4,evenblank5,evenblank6,evenblank7,結(jié)束后跳

24、轉(zhuǎn)到oddhold處。狀態(tài)跳轉(zhuǎn)圖如下所示:BitX位校驗(yàn)X=07OddcheckX奇校驗(yàn)X=0,1,2Bitblank空248位evencheckX偶校驗(yàn)X=07oddholdX奇校驗(yàn)X=0,1,2Oddblank空253位oddblankX空255-X位X=0,1,2evenblankX空255-X位X=07Evenblank空248位evenholdX偶校驗(yàn)X=07第i位不符第i位不符第i位不符第i位不符且達(dá)到4次第i位不符且達(dá)到4次第i位不符沒達(dá)到4次或符合第i位不符沒達(dá)到4次或符合2) 使用Verilog語言完成設(shè)計(jì);答:pcm30實(shí)驗(yàn)代碼如下:module pcm30(clk,rst

25、,data,FLOSSN); input clk,data,rst; output FLOSSN; wire net_data,net_clk,net_FLOSSN,net_rst; pc3d01 clk_iopad (.PAD(clk), .CIN(net_clk); pc3d01 data_iopad (.PAD(data), .CIN(net_data); pc3d01 rst_iopad (.PAD(rst), .CIN(net_rst); pc3o05 FLOSSN_iopad (.I(net_FLOSSN), .PAD(FLOSSN); pcm I_pcm (.clk(net_cl

26、k),.rst(net_rst),.data(net_data), .floss1(net_FLOSSN);endmodulemodule pcm(clk,rst,data,floss1); input clk,rst,data; output floss1; wire floss1; reg floss; reg 7:0state; reg 7:0btblkct; reg 7:0oddblkct; reg 7:0oddblkct0; reg 7:0oddblkct1; reg 7:0oddblkct2; reg 7:0evenblkct; reg 7:0evenblkct0; reg 7:0

27、evenblkct1; reg 7:0evenblkct2; reg 7:0evenblkct3; reg 7:0evenblkct4; reg 7:0evenblkct5; reg 7:0evenblkct6; reg 7:0evenblkct7; reg 1:0flsct; parameter bit0=8'b00000000,/0 bit1=8'b00000001,/1 bit2=8'b00000010,/2 bit3=8'b00000011,/3 bit4=8'b00000100,/4 bit5=8'b00000101,/5 bit6=8

28、'b00000110,/6 bit7=8'b00000111,/7 bitblank=8'b00001000,/8 oddcheck0=8'b00001001,/9 oddcheck1=8'b00001010,/10 oddcheck2=8'b00001011,/11 oddblank=8'b00001100,/12 evencheck0=8'b00010000,/16 evencheck1=8'b00010001,/17 evencheck2=8'b00010010,/18 evencheck3=8'b0

29、0010011,/19 evencheck4=8'b00010100,/20 evencheck5=8'b00010101,/21 evencheck6=8'b00010110,/22 evencheck7=8'b00010111,/23 evenblank=8'b00011000,/24 oddhold0=8'b00100000,/32 oddhold1=8'b00100001,/33 oddhold2=8'b00100010,/34 oddblank0=8'b00100011,/35 oddblank1=8'b

30、00100100,/36 oddblank2=8'b00100101,/37 evenhold0=8'b00101000,/40 evenhold1=8'b00101001, evenhold2=8'b00101010, evenhold3=8'b00101011, evenhold4=8'b00101100, evenhold5=8'b00101101, evenhold6=8'b00101110, evenhold7=8'b00101111, evenblank0=8'b00110000, evenblank1

31、=8'b00110001, evenblank2=8'b00110010, evenblank3=8'b00110011, evenblank4=8'b00110100, evenblank5=8'b00110101, evenblank6=8'b00110110, evenblank7=8'b00110111; assign floss1=(floss=1)?1:0; always(posedge clk or negedge rst) begin if(rst=0) begin floss<=0; state<=0; bt

32、blkct<=0; oddblkct<=0; oddblkct0<=0; oddblkct1<=0; oddblkct2<=0; evenblkct<=0; evenblkct0<=0; evenblkct1<=0; evenblkct2<=0; evenblkct3<=0; evenblkct4<=0; evenblkct5<=0; evenblkct6<=0; evenblkct7<=0; flsct<=0; end else begin case(state) bit0: begin if(data

33、=1) begin state<=bit1; end else begin state<=bit0; end end bit1: begin if(data=0) begin state<=bit2; end else begin state<=bit1; end end bit2: begin if(data=0) begin state<=bit3; end else begin state<=bit1; end end bit3: begin if(data=1) begin state<=bit4; end else begin state&l

34、t;=bit0; end end bit4: begin if(data=1) begin state<=bit5; end else begin state<=bit0; end end bit5: begin if(data=0) begin state<=bit6; end else begin state<=bit1; end end bit6: begin if(data=1) begin state<=bit7; end else begin state<=bit0; end end bit7: begin if(data=1) begin st

35、ate<=bitblank; end else begin state<=bit0; end end bitblank: begin if(btblkct<247) begin btblkct<=btblkct+1; end else begin btblkct<=0; state<=oddcheck0; end end oddcheck0: begin if(data=1) begin state<=oddcheck1; end else begin state<=bit0; end end oddcheck1: begin if(data=1

36、) begin state<=oddcheck2; end else begin state<=bit0; end end oddcheck2: begin if(data=0) begin state<=oddblank; end else begin state<=bit0; end end oddblank: begin if(oddblkct<252) begin oddblkct<=oddblkct+1; end else begin oddblkct<=0; state<=evencheck0; end end evencheck0:

37、 begin if(data=1) begin state<=evencheck1; end else begin state<=bit0; end end evencheck1: begin if(data=0) begin state<=evencheck2; end else begin state<=bit0; end end evencheck2: begin if(data=0) begin state<=evencheck3; end else begin state<=bit0; end end evencheck3: begin if(data=1) begin state<=evencheck4; end else begin state<=bit0; end end evencheck4: begin if(data=1) begin state<=evencheck5; end else begin state<=bit0; end end evencheck5: begin if(data=0) begin state<=evencheck6; end else begin state<=bit0; end end evencheck6: b

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論