![SOC設(shè)計實驗報告_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/16/01caca6b-db28-4e9d-9751-1256734266e1/01caca6b-db28-4e9d-9751-1256734266e11.gif)
![SOC設(shè)計實驗報告_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/16/01caca6b-db28-4e9d-9751-1256734266e1/01caca6b-db28-4e9d-9751-1256734266e12.gif)
![SOC設(shè)計實驗報告_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/16/01caca6b-db28-4e9d-9751-1256734266e1/01caca6b-db28-4e9d-9751-1256734266e13.gif)
![SOC設(shè)計實驗報告_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/16/01caca6b-db28-4e9d-9751-1256734266e1/01caca6b-db28-4e9d-9751-1256734266e14.gif)
![SOC設(shè)計實驗報告_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/16/01caca6b-db28-4e9d-9751-1256734266e1/01caca6b-db28-4e9d-9751-1256734266e15.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、西北工業(yè)大學(xué)SOC設(shè)計實踐實驗報告學(xué) 院: 軟件與微電子學(xué)院 學(xué)號: 姓名: 專 業(yè): 時 間: 實驗地點: 實驗一、編寫一個自動售貨機Verilog HDL模型一、 題目描述編寫一個自動售貨機Verilog HDL模型,(1)售貨機出售15分的飲料。(2)投幣器只接受5分和1角硬幣。(3)必須提供適當(dāng)數(shù)目的零錢,投幣器不找錢。二、 實驗內(nèi)容1) 定義狀態(tài),并畫出狀態(tài)轉(zhuǎn)換圖,解釋設(shè)計思路;答:我在設(shè)計本題所要求的售貨機時使用了4個狀態(tài),分別為start(00),st1(01),st2(10),st3(11)其中在第三個狀態(tài)是輸出out為1,其他的三個狀態(tài)輸出為0。狀態(tài)轉(zhuǎn)換圖如下所示: star
2、t St3 St1 St2Five=1ten=1Five=1ten=1ten=1Five=1 其中狀態(tài)機在跳到st3時,由st3直接跳的start狀態(tài)這使得out只在投幣后的一個時鐘周期處于高電平而不會長期處于高電平的狀態(tài),這與現(xiàn)實的只輸出一瓶飲料的結(jié)果不相符。2) 使用Verilog語言完成設(shè)計;解:自動售貨機的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進行仿真;答:testbench測試代碼如下: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三個五分的 #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一個五分,一個十分 #20 five_cents=1; #2 five_cents=0; #10 ten_cents=1; #2 ten_cents=0; /3兩個十分 #20 ten_cents=1; #2 ten_cents=0; #10 ten_cents=1; #2 ten_cents=0; /4一個十分,一個五分 #20 ten_cents=1; #2 ten_cents=0; #10 five
7、_cents=1; #2 five_cents=0; /5兩個五分,一個十分 #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測試波形圖如下所示:Autosel-vcs仿真波形 最下邊一行代表的是投5分,倒數(shù)第二行代表的是復(fù)位信號,第三行是時鐘信號,第二行是投10分,由圖可知,在
8、投3個5分,1個5分、1個10分,兩個10分,1個10分、1個5分,2個5分、1個10分都可使輸出信號為1,滿足題意要求。4) 使用Synopsys DC進行綜合。答:autosel.con約束文件如下:#Constrain# #reset_designcreate_clock -period 490.2 get_ports clk#創(chuàng)建頻率為2.04MHz的時鐘信號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#檢測設(shè)計是否由問題source ./scripts/autosel.con#加上約束文件check_timing#檢測時序compile_ultra -scan -retime#對文件進行編譯redirect -tee
11、-file rc.rpt report_constraint -allredirect -tee -file rt.rpt report_timingredirect -tee -file ra.rpt report_area#產(chǎn)生各種約束的報告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è)一列是每一項計劃所用的時間,右側(cè)一列是到目前所用的總時間,而且我們可以看出來實際的到達(dá)時間遠(yuǎn)遠(yuǎn)小于要求的時間,因此時序方面是滿足設(shè)計要求的。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 綜合電路三、 實驗報告要求1) 設(shè)計思路,狀態(tài)定義,轉(zhuǎn)臺轉(zhuǎn)換圖。2) 使用Verilog HDL完成設(shè)計。3) 編寫testbench。4) VCS完成仿真,對仿真結(jié)果進行分析。5) 編寫Synopsys DC綜合腳本文件
18、dc.tcl以及約束文件autosel.con。6) 使用Synopsys DC進行綜合,給出綜合后的報告,包括rc.rpt,rt.rpt,ra.rpt,并做必要說明。7) 綜合后的電路圖。四、 分析與討論 在做本次試驗時,由于剛開始使用的投幣信號的脈沖較寬,使得輸出信號在時輸出信號有效的最后一個信號為高時,狀態(tài)發(fā)生了連續(xù)的跳轉(zhuǎn),最后的輸出信號也發(fā)生了迅速的變化,考慮時序之后,使用單周期脈沖的輸入信號使得輸出信號在下一個周期有效,而在過一個周期由于此時輸入信號無效,使得狀態(tài)不再改變而使得輸出信號也只有在一個周期內(nèi)為高電平,從而滿足了要求。 此外,在剛開始設(shè)計時由于對狀態(tài)機的編寫規(guī)范不清楚,使用
19、了ten和five作為always語句的觸發(fā)條件,雖然可以仿真出波形,但是由于不符合dc綜合的規(guī)范,使得在dc時出現(xiàn)了“將CLK信號作為輸入信號”的錯誤,狀態(tài)機的下周期邏輯只能使用clk作為觸發(fā)條件。五、 教師評語簽名:日期:成績 實驗二、設(shè)計PCM30基群幀同步電路一、 題目描述設(shè)計PCM30基群幀同步電路,該PCM30機群系統(tǒng)結(jié)構(gòu)如下:定時電路同步搜索DATACLKFLOSS輸入輸出信號說明:DATA :輸入串行碼流,速率為2.04Mb/S;CLK :輸入時鐘,頻率為2.04MHz;/FLOSS :輸出失步信號,低電平有效。電路功能說明:1輸入碼流DATA,速率為2.04Mb/S;每幀25
20、6bit,其中前8bit為幀同步碼;偶數(shù)幀的幀同步碼為10011011,奇數(shù)幀的幀同步碼為110XXXXX(X為任意值)。2系統(tǒng)初始狀態(tài)為失步態(tài),失步信號FLOSS輸出低電平,電路在輸入碼流里逐比特搜尋同步碼,當(dāng)搜尋到第一個偶幀同步碼后,電路轉(zhuǎn)為逐幀搜尋,當(dāng)連續(xù)三幀均正確地搜尋到同步碼后,系統(tǒng)狀態(tài)轉(zhuǎn)為同步態(tài),失步信號輸出高電平;否則電路重新進入逐比特搜尋狀態(tài)。3系統(tǒng)處于同步態(tài)后,當(dāng)連續(xù)四幀檢出的同步碼均錯誤,則系統(tǒng)轉(zhuǎn)為失步態(tài),失電路時序說明:1) 輸入信號DATA與CLK的時序關(guān)系2) 同步過程時序與DATA的幀結(jié)構(gòu)二、 實驗內(nèi)容1) 定義狀態(tài),并畫出狀態(tài)轉(zhuǎn)換圖,解釋設(shè)計思路答:為了實現(xiàn)pcm
21、30的功能,我的分析思路如下:首先,還沒有進入幀同步狀態(tài)時,是位尋址狀態(tài)依次為bit0,bit1,bit2,bit3,bit4,bit5,bit6,bit7;當(dāng)滿足了一次偶校驗之后,要進行空248位的處理,這個狀態(tài)可以用bitblank來表示;再次進行一次奇校驗用oddcheck0,oddcheck1,oddcheck2三個狀態(tài)來處理;奇校驗完成進入oddblank來表示空缺253位;在此進行一次偶校驗用evencheck0,evencheck1,evencheck2,evencheck3,evencheck4,evencheck5,evencheck6,evencheck7來表示,通過后使f
22、loss=1;如果通過了偶校驗則進入evenblank狀態(tài)來使pcm30空缺248位,此時進入幀校驗的奇校驗;幀校驗的奇校驗使用三個狀態(tài)來完成,分別為:oddhold0,oddhold1,oddhold2來校驗奇幀的1、2、3位;奇校驗可能產(chǎn)生不同的結(jié)果,例如在0,1,2位產(chǎn)生不符合和符合一共4種情況,這樣一來就不能只空固定的位數(shù)了,因為假如在0位就不符合的話,在0位就跳出了,這樣需要跳過255位,與之類似,1位不符合要跳254位,而3為符合于不符合都是要跳過253位的,因此應(yīng)該跳的位數(shù)隨著不同的情況來變化,需要有跳255,254,253位狀態(tài)oddblank0,oddblank1和oddbl
23、ank2的分別對應(yīng)于三個奇校驗的狀態(tài)oddhold0,oddhold1,oddhold2;oddblank0,oddblank1和oddblank2結(jié)束后的狀態(tài)應(yīng)該跳到偶校驗的狀態(tài)中,使用8個狀態(tài)來完成,分別為:evenhold0,evenhold1,evenhold2,evenhold3,evenhold4,evenhold5,evenhold6,evenhold7;前7個狀態(tài)不滿足或者第8個狀態(tài)結(jié)束分別跳轉(zhuǎn)到evenblank0,evenblank1,evenblank2,evenblank3,evenblank4,evenblank5,evenblank6,evenblank7,結(jié)束后跳
24、轉(zhuǎn)到oddhold處。狀態(tài)跳轉(zhuǎn)圖如下所示:BitX位校驗X=07OddcheckX奇校驗X=0,1,2Bitblank空248位evencheckX偶校驗X=07oddholdX奇校驗X=0,1,2Oddblank空253位oddblankX空255-X位X=0,1,2evenblankX空255-X位X=07Evenblank空248位evenholdX偶校驗X=07第i位不符第i位不符第i位不符第i位不符且達(dá)到4次第i位不符且達(dá)到4次第i位不符沒達(dá)到4次或符合第i位不符沒達(dá)到4次或符合2) 使用Verilog語言完成設(shè)計;答:pcm30實驗代碼如下: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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車維修廠租賃居間協(xié)議
- 消費品以舊換新策略在市場中的適應(yīng)性與優(yōu)化
- 企業(yè)項目合作合同范例
- 空心墩吊圍欄施工方案
- 業(yè)主停車糾紛合同范例
- 冷暖設(shè)備租賃合同范例
- 大車包車合同范例
- 串貨合同范例寫
- 兄弟合伙做生意合同范例
- 分包混凝土合同范例
- 《Python程序設(shè)計》課件-1:Python簡介與應(yīng)用領(lǐng)域
- 體育概論(第二版)課件第三章體育目的
- DB11T 1481-2024生產(chǎn)經(jīng)營單位生產(chǎn)安全事故應(yīng)急預(yù)案評審規(guī)范
- 《氓》教學(xué)設(shè)計 2023-2024學(xué)年統(tǒng)編版高中語文選擇性必修下冊
- 化學(xué)元素周期表注音版
- 藥物過敏性休克
- T-GDASE 0042-2024 固定式液壓升降裝置安全技術(shù)規(guī)范
- 《電力系統(tǒng)自動化運維綜合實》課件-2M 同軸電纜制作
- 消防維保服務(wù)方案及實施細(xì)則
- 保衛(wèi)管理員培訓(xùn)課件
- 售前工程師工作總結(jié)
評論
0/150
提交評論