版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
華華中科技大學課程設(shè)計報告數(shù)字電路與邏輯設(shè)計課程設(shè)計報告題目:電梯控制器的設(shè)計與實現(xiàn)專業(yè):計算機科學與技術(shù)班級:學號:姓名:電話:郵件:974985526@分組:完成日期:2015.10.8指導教師:
不建議采用本報告所采用的設(shè)計方案(異步時序),因為這樣的實現(xiàn)過于復雜且難以調(diào)試。建議僅采用統(tǒng)一的CLK作為always語句的更新條件,以實現(xiàn)同步時序的電路。
目錄TOC\o"1-3"\h\u1 課程設(shè)計概述 51.1 課設(shè)目的 51.2 課設(shè)要求 51.3 課設(shè)任務(wù) 51.4 實驗環(huán)境 52 基本方案設(shè)計 72.1 設(shè)計需求 72.2 總體結(jié)構(gòu)設(shè)計 82.2.1 時鐘分頻 82.2.2 七段譯碼器顯示模塊 82.2.3 電梯請求控制模塊 82.2.4 電梯開關(guān)門控制模塊 92.2.5 電梯運行總控模塊 92.2.6 電梯單次運行模塊 92.2.7 LED燈控制模塊 92.3 詳細設(shè)計 102.3.1 時鐘分頻 102.3.2 七段譯碼器顯示 102.3.3 電梯請求控制模塊 102.3.4 電梯開關(guān)門控制模塊 122.3.5 電梯運行總控模塊 142.3.6 電梯單次運行模塊 142.3.7 LED燈控制模塊 142.4 實驗過程與調(diào)試 152.4.1 仿真結(jié)果 152.4.2 主要故障與調(diào)試 322.4.3 模塊內(nèi)部圖 332.5 功能測試 422.5.1 手動開關(guān)門測試 422.5.1 重置功能測試 442.5.1 常規(guī)使用測試 463 總結(jié)與心得 503.1 課設(shè)總結(jié) 503.2 課設(shè)心得 50參考文獻 52附錄(源程序) 53課程設(shè)計概述課設(shè)目的通過硬件描述語言Verilog的編程,深入了解并掌握可編程芯片PLD的設(shè)計技術(shù),加強學生對《數(shù)字邏輯》課程所學知識綜合利用的能力。培養(yǎng)學生創(chuàng)造性思維能力和獨立解決實際問題的能力。課設(shè)要求(1)能夠全面地應(yīng)用課程中所學的基本理論和基本方法,完成從設(shè)計邏輯電路到設(shè)計簡單數(shù)字系統(tǒng)的過渡。(2)能力獨立思考、獨立查閱資料,獨立設(shè)計規(guī)定的系統(tǒng)。(3)能夠獨立地完成實施過程,包括安裝、布線、測試和排除故障。課設(shè)任務(wù)(1)制定出詳細設(shè)計方案;(2)通過VerilogHDL完成規(guī)定的設(shè)計任務(wù),然后進行編譯和仿真,保證設(shè)計的正確性;(3)生成熔絲圖文件,下載到Basys2開發(fā)板,通過實際線路進行驗證;(4)對復雜系統(tǒng)的設(shè)計采取模塊化、層次化的設(shè)計方法;(5)撰寫設(shè)計報告,并對存在的問題進行分析、提出改進意見。實驗環(huán)境(1)開發(fā)環(huán)境ISEProjectNavigatorISE是使用XILINX的FPGA的必備的設(shè)計工具。目前官方提供下載的最新版本是14.4。它可以完成FPGA開發(fā)的全部流程,包括設(shè)計輸入、仿真、綜合、布局布線、生成BIT文件、配置以及在線調(diào)試等,功能非常強大。ISE除了功能完整,使用方便外,它的設(shè)計性能也非常好,拿ISE9.x來說,其設(shè)計性能比其他解決方案平均快30%,它集成的時序收斂流程整合了增強性物理綜合優(yōu)化,提供最佳的時鐘布局、更好的封裝和時序收斂映射,從而獲得更高的設(shè)計性能。先進的綜合和實現(xiàn)算法將動態(tài)功耗降低了10%。(2)Basys2開發(fā)板Basys2開發(fā)板是一個電路設(shè)計實現(xiàn)平臺,任何人都可以通過它來搭建一個真正的數(shù)字電路。Basys2是圍繞著一個XilinxSpartan-3EFPGA芯片和一個AtmelAT90USBUSB控制器搭建的,它提供了完整、隨時可以使用的硬件平臺,并且它適合于從基本邏輯器件到復雜控制器件的各種主機電路。Basys2板上集成了大量的I/O設(shè)備和FPGA所需的支持電路,讓用戶能夠構(gòu)建無數(shù)的設(shè)計而不需要其他器件。用戶設(shè)計可以不局限于Basys2板本身,還可以通過四個標準的擴展連接口延伸到面包板、用戶自定義電路或Pmod模板中。所有6針接口上的信號都受到ESD和短路保護,從而確保在任何環(huán)境中的使用壽命。Basys2開發(fā)板兼容所有版本的XilinxISE工具。Basys2附帶一個用于供電和編程的USB下載線,所以就不需要其他供電器件或編程下載線?;痉桨冈O(shè)計設(shè)計需求輸入:reset(脈沖),電源(總開關(guān)),電梯內(nèi)部樓層按鈕(4個,開關(guān)),樓層外部的上下按鈕(3樓和6樓的用開關(guān),1樓和8樓的用脈沖),開關(guān)門(1個,脈沖);輸出:樓層顯示數(shù)碼管,計時數(shù)碼管;電梯運行指示燈(電源),電梯上下指示燈,到達樓層指示燈,開關(guān)門狀態(tài)指示燈電源開關(guān)作為電路總清零信號,初始狀態(tài)為Off;撥動“電源開關(guān)”,電梯電路進入工作狀態(tài);初態(tài)為電梯在1樓;電梯可上可下,如果到達某一層需要停下,則開門后停5s,若停5s期間,按關(guān)門鍵,則立刻關(guān)門,否則5s后自動關(guān)門。在樓層數(shù)碼管顯示電梯當前所在的樓層;并用時間數(shù)碼管顯示倒計時;不運行時不顯示時間;電梯正在上行或下行時,開關(guān)門鍵失效。電梯處于某層時,可以選擇要到達的樓層,選擇本樓層則開門。選其他層時,點擊啟動按鈕,則電梯開始運行。每次reset撥到0時,電梯正常運行到1樓停止運行;電源打開,電源指示燈亮;電梯門開時,開關(guān)門指示燈亮,否則,滅;電梯上行時,上行指示燈亮,下行指示燈滅;電梯下行時,下行指示燈亮,上行指示燈滅;某一樓層內(nèi)部有請求時,該樓層led燈亮,當電梯處于該層時,led燈滅,其他情況滅;相鄰兩層運行時間為9s,并用時間數(shù)碼管顯示倒計時;電梯升降的規(guī)律:原則1:樓層設(shè)置優(yōu)先。每個選擇的樓層都要停止5秒,然后繼續(xù)運行。原則2:就近原則。電梯運行時,按照就近原則來定義電梯的運行方向,例如,電梯在3樓,2樓有乘客要下樓,則電梯下行到2樓,在二樓設(shè)置樓層為1樓后,下降到1樓;原則3:先上后下。當上下樓層都有請求時,以及同一樓層既有上又有下請求時,先上后下;總體結(jié)構(gòu)設(shè)計本控制器為電梯控制器,主要可分為以下七個模塊時鐘分頻本模塊根據(jù)隊友及自己的需求自行分頻。詳參隊友報告。七段譯碼器顯示模塊本模塊由隊友完成。詳參隊友報告。電梯請求控制模塊本模塊負責生成用戶請求鏈、向LHCM模塊發(fā)送新一輪活動開始信號和確定系統(tǒng)是否在重置狀態(tài)。本模塊的輸入如下:UserOutsideRequestF1、UserOutsideRequestF8、UserOutsideRequestUpF3、UserOutsideRequestUpF6、UserOutsideRequestDownF3、UserOutsideRequestDownF6、UserInsideRequestF1、UserInsideRequestF3、UserInsideRequestF6、UserInsideRequestF8等負責樓層請求的開關(guān)/脈沖;rst,重置按鈕信號;CLK_1o20,20HZ的時鐘;LiftDirectionUp,電梯運行的方向狀態(tài),1表示向上,0表示向下;LiftIsStop,電梯是否處于停止運行狀態(tài),1表示停止、0表示運行;LiftCurrentFloor,電梯當前樓層狀態(tài),輸入共八位,低位到高位的每一位都與低到高樓層一一對應(yīng),比如八樓即’b10000000;LFCMRequireNewRound,來自LFCM的請求新一輪的脈沖信號;DoorStateChangedFlag,電梯開關(guān)門標志脈沖信號,其中DoorStateChangedFlag[0]是開門脈沖,DoorStateChangedFlag[1]是關(guān)門脈沖;DoorStateOpen,電梯是否出于開門狀態(tài),1表示開門中,0表示關(guān)門中。本模塊的輸出如下:LFCMStartNewRound,使LFCM開始新輪活動的脈沖信號;UserOutsideUpSelection_True,用戶外部向上請求鏈,低位到高位與低到高樓層一一對應(yīng);UserOutsideDownSelection_True,用戶外部向下請求鏈,低位到高位與低到高樓層一一對應(yīng);UserInsideSelection_True,用戶內(nèi)部請求鏈,低位到高位與低到高樓層一一對應(yīng);電梯開關(guān)門控制模塊本模塊負責控制電梯門的開關(guān)及進行相關(guān)動作時輸出門的狀態(tài)和開/關(guān)門的標志脈沖信號。本模塊的輸入如下:UserOutsideRequestF1、UserOutsideRequestF8、UserOutsideRequestUpF3、UserOutsideRequestUpF6、UserOutsideRequestDownF3、UserOutsideRequestDownF6等外部用戶請求開關(guān)/脈沖;UserDoorClose,開/關(guān)門按鈕脈沖信號;CLK_1o20,20HZ的時鐘;LiftIsStop,電梯是否處于停止運行狀態(tài),1表示停止、0表示運行;LiftCurrentFloor,電梯當前樓層狀態(tài),輸入共八位,低位到高位的每一位都與低到高樓層一一對應(yīng),比如八樓即’b10000000;LERMRequireDoorOpen,來自LERM的請求開門信號。本模塊的輸出如下:DoorStateChangedFlag,電梯開關(guān)門標志脈沖信號,其中DoorStateChangedFlag[0]是開門脈沖,DoorStateChangedFlag[1]是關(guān)門脈沖;DoorStateOpen,電梯是否出于開門狀態(tài),1表示開門中,0表示關(guān)門中。電梯運行總控模塊本模塊由隊友完成。詳參隊友報告。電梯單次運行模塊本模塊由隊友完成。詳參隊友報告。LED燈控制模塊本模塊根據(jù)隊友及自己各自負責模塊的顯示需求合作完成。詳參隊友報告。詳細設(shè)計本電梯控制器由主模塊和7個子模塊構(gòu)成,七個子模塊是并行的,除了外部輸入,其他由網(wǎng)線連接,可以互換傳遞參數(shù)。圖2.1系統(tǒng)整體模塊框圖時鐘分頻流程說明及框圖詳見隊友報告。七段譯碼器顯示流程說明及框圖詳見隊友報告。電梯請求控制模塊 本模塊響應(yīng)用戶的請求控制,根據(jù)電梯的實際運行狀況決定是否將對應(yīng)請求加入請求鏈中,并在電梯門打開時在請求鏈中清除需要被清除的請求。此外,當模塊接收到來自LHCM的請求新輪活動的信號時,當序列鏈中加入新的請求后即回饋給LHCM開始新輪活動的信號。 圖2.2電梯請求控制模塊框圖電梯開關(guān)門控制模塊本模塊整合用戶的外部請求控制、來自LERM的開門信號、用戶開/關(guān)門信號,整合出一個統(tǒng)一的供內(nèi)部模塊使用的開門信號,該信號使電梯門打開或在電梯門打開時刷新電梯關(guān)門倒計時,并使程序輸出開門信號;模塊內(nèi)部在時鐘作用下當門開時不斷倒計時,倒計時結(jié)束或受到用戶的關(guān)門按鈕信號即關(guān)門,并發(fā)送關(guān)門信號。計時期間會輸出倒計時。圖2.2電梯開關(guān)門控制模塊框圖電梯運行總控模塊流程說明及框圖詳見隊友報告。電梯單次運行模塊流程說明及框圖詳見隊友報告。LED燈控制模塊本模塊根據(jù)外部電路的運行情況,結(jié)合需求,點亮或者熄滅對應(yīng)的燈。控制邏輯如圖所示。圖2.3LED燈控制模塊框圖實驗過程與調(diào)試仿真結(jié)果此處給出主模塊在多種可能的用戶請求下主模塊常規(guī)請求仿真主模塊有13個輸入,10個輸出。其中輸入依次為:時鐘(CLK_Ori)、用戶外部一樓請求(UserOutsideRequestF1)、用戶外部八樓請求(UserOutsideRequestF8)、用戶外部三樓向上請求(UserOutsideRequestUpF3)、用戶外部三樓向下請求(UserOutsideRequestDownF3)、用戶外部六樓向上請求(UserOutsideRequestUpF6)、用戶外部六樓向下請求(UserOutsideRequestDownF6)、用戶內(nèi)部一樓請求(UserInsideRequestF1)、用戶內(nèi)部三樓請求(UserInsideRequestF3)、用戶內(nèi)部六樓請求(UserInsideRequestF6)、用戶內(nèi)部八樓請求(UserInsideRequestF8)、開關(guān)門按鍵(UserDoorClose)、重置按鍵(rst)。其中輸出依次為:七段譯碼器數(shù)位接口(d1_wx)、七段譯碼器數(shù)字接口(d1_out)、電源燈(LightPower)、開門狀態(tài)燈(LightDoorOpen)、電梯下行指示燈(LightDirectionDown)、電梯上行指示燈(LightDirectionUp)、一樓指示燈(LightF1)、三樓指示燈(LightF3)、六樓指示燈(LightF6)、八樓指示燈(LightF8)。為了方便說明,仿真程序中顯示的中間寄存器有:電梯當前樓層(LiftCurrentFloor)、電梯關(guān)門倒計時(DoorCloseCountdown)、電梯運行倒計時(LiftMoveCountdown)、電梯外部向上請求鏈(UserOutsideUpSelection_True)、電梯外部向下請求鏈(UserOutsideDownSelection_True)、電梯內(nèi)部請求鏈(UserInsideSelection_True)。仿真程序2.1moduleMain_Test; //Inputs regCLK_Ori; regUserOutsideRequestF1; regUserOutsideRequestF8; regUserOutsideRequestUpF3; regUserOutsideRequestUpF6; regUserOutsideRequestDownF3; regUserOutsideRequestDownF6; regUserInsideRequestF1; regUserInsideRequestF3; regUserInsideRequestF6; regUserInsideRequestF8; regUserDoorClose; regrst; //Outputs wire[3:0]d1_wx; wire[7:0]d1_out; wireLightPower; wireLightDoorOpen; wireLightDirectionDown; wireLightDirectionUp; wireLightF1; wireLightF3; wireLightF6; wireLightF8; //InstantiatetheUnitUnderTest(UUT) mainuut( .CLK_Ori(CLK_Ori), .UserOutsideRequestF1(UserOutsideRequestF1), .UserOutsideRequestF8(UserOutsideRequestF8), .UserOutsideRequestUpF3(UserOutsideRequestUpF3), .UserOutsideRequestUpF6(UserOutsideRequestUpF6), .UserOutsideRequestDownF3(UserOutsideRequestDownF3), .UserOutsideRequestDownF6(UserOutsideRequestDownF6), .UserInsideRequestF1(UserInsideRequestF1), .UserInsideRequestF3(UserInsideRequestF3), .UserInsideRequestF6(UserInsideRequestF6), .UserInsideRequestF8(UserInsideRequestF8), .UserDoorClose(UserDoorClose), .rst(rst), .d1_wx(d1_wx), .d1_out(d1_out), .LightPower(LightPower), .LightDoorOpen(LightDoorOpen), .LightDirectionDown(LightDirectionDown), .LightDirectionUp(LightDirectionUp), .LightF1(LightF1), .LightF3(LightF3), .LightF6(LightF6), .LightF8(LightF8) ); initialbegin //InitializeInputs CLK_Ori=0; UserOutsideRequestF1=0; UserOutsideRequestF8=0; UserOutsideRequestUpF3=0; UserOutsideRequestUpF6=0; UserOutsideRequestDownF3=0; UserOutsideRequestDownF6=0; UserInsideRequestF1=0; UserInsideRequestF3=0; UserInsideRequestF6=0; UserInsideRequestF8=0; UserDoorClose=0; rst=0; //Wait100nsforglobalresettofinish #100 UserDoorClose=0; #5 UserOutsideRequestF1=1; UserOutsideRequestF8=1; UserOutsideRequestUpF3=1; UserOutsideRequestUpF6=1; UserOutsideRequestDownF3=1; UserOutsideRequestDownF6=1; UserInsideRequestF1=1; UserInsideRequestF3=1; UserInsideRequestF6=1; UserInsideRequestF8=1; end always #1CLK_Ori=~CLK_Ori;endmodule數(shù)據(jù)全部初始化為0,而后按下開關(guān)門鍵,再啟用所有樓層選擇請求。等待程序開始。仿真圖如圖2.4所示。圖2.4主模塊常規(guī)仿真測試圖-1圖2.5主模塊常規(guī)仿真測試圖-2圖2.6主模塊常規(guī)仿真測試圖-3圖2.7主模塊常規(guī)仿真測試圖-4 以上波形表明程序開始運行時,按開關(guān)門鍵把門倒計時時間由5直接設(shè)置為0,并使門關(guān)閉,使門狀態(tài)指示燈熄滅。稍后系統(tǒng)錄入九個請求信號后,可以看見請求信號被寫入相應(yīng)請求序列表中。電梯由于在一樓,關(guān)門時收到一樓的外部信號,電梯響應(yīng)開門。關(guān)門倒計時結(jié)束后,進入運行倒計時,九秒后電梯向上運行,到達二樓。二樓沒有任何請求,因此在二樓不停,重新進行九秒倒計時。電梯到達第三層,開門后清除了電梯內(nèi)部和電梯外部向上的三樓請求,而保留內(nèi)部向下的三樓請求。……電梯到達八樓后,在電梯關(guān)門清除了八樓的所有序列后判斷反向有序列,因此轉(zhuǎn)向而向下運行?!娞莸竭_第三層,開門后清除最后一個請求;待關(guān)門倒計時結(jié)束后關(guān)門,關(guān)門時判定沒有任何請求。電梯停止運行。主模塊重置請求仿真主模塊有13個輸入,10個輸出。其中輸入依次為:時鐘(CLK_Ori)、用戶外部一樓請求(UserOutsideRequestF1)、用戶外部八樓請求(UserOutsideRequestF8)、用戶外部三樓向上請求(UserOutsideRequestUpF3)、用戶外部三樓向下請求(UserOutsideRequestDownF3)、用戶外部六樓向上請求(UserOutsideRequestUpF6)、用戶外部六樓向下請求(UserOutsideRequestDownF6)、用戶內(nèi)部一樓請求(UserInsideRequestF1)、用戶內(nèi)部三樓請求(UserInsideRequestF3)、用戶內(nèi)部六樓請求(UserInsideRequestF6)、用戶內(nèi)部八樓請求(UserInsideRequestF8)、開關(guān)門按鍵(UserDoorClose)、重置按鍵(rst)。其中輸出依次為:七段譯碼器數(shù)位接口(d1_wx)、七段譯碼器數(shù)字接口(d1_out)、電源燈(LightPower)、開門狀態(tài)燈(LightDoorOpen)、電梯下行指示燈(LightDirectionDown)、電梯上行指示燈(LightDirectionUp)、一樓指示燈(LightF1)、三樓指示燈(LightF3)、六樓指示燈(LightF6)、八樓指示燈(LightF8)。為了方便說明,仿真程序中顯示的中間寄存器有:電梯當前樓層(LiftCurrentFloor)、電梯關(guān)門倒計時(DoorCloseCountdown)、電梯運行倒計時(LiftMoveCountdown)、電梯外部向上請求鏈(UserOutsideUpSelection_True)、電梯外部向下請求鏈(UserOutsideDownSelection_True)、電梯內(nèi)部請求鏈(UserInsideSelection_True)。仿真程序2.2moduleMain_Test; //Inputs regCLK_Ori; regUserOutsideRequestF1; regUserOutsideRequestF8; regUserOutsideRequestUpF3; regUserOutsideRequestUpF6; regUserOutsideRequestDownF3; regUserOutsideRequestDownF6; regUserInsideRequestF1; regUserInsideRequestF3; regUserInsideRequestF6; regUserInsideRequestF8; regUserDoorClose; regrst; //Outputs wire[3:0]d1_wx; wire[7:0]d1_out; wireLightPower; wireLightDoorOpen; wireLightDirectionDown; wireLightDirectionUp; wireLightF1; wireLightF3; wireLightF6; wireLightF8; //InstantiatetheUnitUnderTest(UUT) mainuut( .CLK_Ori(CLK_Ori), .UserOutsideRequestF1(UserOutsideRequestF1), .UserOutsideRequestF8(UserOutsideRequestF8), .UserOutsideRequestUpF3(UserOutsideRequestUpF3), .UserOutsideRequestUpF6(UserOutsideRequestUpF6), .UserOutsideRequestDownF3(UserOutsideRequestDownF3), .UserOutsideRequestDownF6(UserOutsideRequestDownF6), .UserInsideRequestF1(UserInsideRequestF1), .UserInsideRequestF3(UserInsideRequestF3), .UserInsideRequestF6(UserInsideRequestF6), .UserInsideRequestF8(UserInsideRequestF8), .UserDoorClose(UserDoorClose), .rst(rst), .d1_wx(d1_wx), .d1_out(d1_out), .LightPower(LightPower), .LightDoorOpen(LightDoorOpen), .LightDirectionDown(LightDirectionDown), .LightDirectionUp(LightDirectionUp), .LightF1(LightF1), .LightF3(LightF3), .LightF6(LightF6), .LightF8(LightF8) ); initialbegin //InitializeInputs CLK_Ori=0; UserOutsideRequestF1=0; UserOutsideRequestF8=0; UserOutsideRequestUpF3=0; UserOutsideRequestUpF6=0; UserOutsideRequestDownF3=0; UserOutsideRequestDownF6=0; UserInsideRequestF1=0; UserInsideRequestF3=0; UserInsideRequestF6=0; UserInsideRequestF8=0; UserDoorClose=0; rst=0;#5 UserOutsideRequestF8=1; #1 UserOutsideRequestF8=0; #2000 rst=1; #1 rst=0; #5000 rst=1; #1 rst=0; UserOutsideRequestUpF3=1; end always #1CLK_Ori=~CLK_Ori;endmodule數(shù)據(jù)全部初始化為0,而后按下外部八樓按鍵,等待十秒后按下重置鍵,再等待二十五秒,按下重置鍵,將外部三樓向上開關(guān)撥好。等待程序開始。圖2.8主模塊重置仿真測試圖-1圖2.9主模塊重置仿真測試圖-2圖2.10主模塊重置仿真測試圖-3 以上波形表明程序開始運行時,由于接受到外部的向八樓運行的請求。因此電梯在等待門關(guān)閉之后即向上運行。 電梯在運行到二樓時接受到重置信號,此時電梯繼續(xù)向上運行直至到了三樓,然后就開始下行,直至回到一樓。 待一切就緒后,電梯接到重置信號,電梯恢復正常。電梯在收到運行至三樓的信號后即刻出發(fā)至三樓。主要故障與調(diào)試(1)故障1問題描述:在主模塊中使用了各模塊的實例后,在仿真時發(fā)現(xiàn)各模塊間不能進行通信。問題分析:由于verilog語言生成的模塊對應(yīng)實際中的硬件,因此從實際出發(fā),我認為問題可能出現(xiàn)在verilog并沒有自動為我的各模塊走線。經(jīng)查資料后發(fā)現(xiàn)模塊間需要用線網(wǎng)進行通信。解決方法:在主模塊中加入大量必要的Wire類型變量。(2)故障2問題描述:請求控制模塊使用電平作為敏感信號時,電梯會在沒有任何輸入的情況下自動上升至八樓。問題分析:從程序運行邏輯出發(fā),我認為是請求鏈在開始時即有了初值。這樣問題不是出現(xiàn)在了請求鏈的初始化上,就是出現(xiàn)在了初始觸發(fā)電平變化上。經(jīng)過排查,發(fā)現(xiàn)問題出在后者。寄存器在進行初始化時由高阻初始化得到一個確定的值,而這一過程被電路認為是敏感信號被觸發(fā),因此出現(xiàn)上述問題。解決方法:對輸入請求改為上升沿取樣。(3)故障3問題描述:在和隊友嘗試實現(xiàn)重置功能的時候,發(fā)現(xiàn)單次運行模塊沒有按照預設(shè)的邏輯,先沿著原本的方向完成當前樓層,再于下一樓層不間斷地返回一樓,而是在運行倒計時結(jié)束后直接轉(zhuǎn)向,因此甚至導致出現(xiàn)了一樓在向二樓爬升時突然轉(zhuǎn)向跑到“零”樓的事故。問題分析:從程序運行邏輯出發(fā),程序是沒有問題的,仿真結(jié)果也支持了我的想法。那么當程序仿真結(jié)果和實際運行結(jié)果不一致的時候相比就是電路的綜合過程出了問題。果然,在翻閱warning表的時候我讀到了這一條語句“WARNING:Xst:905-"LiftEachRunModule.v"line95:Oneormoresignalsaremissinginthesensitivitylistofalwaysblock.ToenablesynthesisofFPGA/CPLDhardware,XSTwillassumethatallnecessarysignalsarepresentinthesensitivitylist.Pleasenotethattheresultofthesynthesismaydifferfromtheinitialdesignspecification.Themissingsignalsare:<Rst_Triggered>”。原來ISE在對源程序進行綜合的時候認為我的語句不可綜合,就為原敏感變量表添加了一個敏感變量。在將這條邏輯考慮后,我遇到的問題得到了合理的解釋。解決方法:對源程序不同always的邏輯進行部分合并,并將電平觸發(fā)改為上升沿觸發(fā)。(4)故障4問題描述:請求控制模塊在經(jīng)過同時具有外部上/下請求的樓層并繼續(xù)移動后,若電梯會轉(zhuǎn)向,則不會在上述樓層開門。問題分析:電梯不會無故忽略具有合理請求控制的樓層,那么唯一的解釋就是請求鏈在電梯到達同時具有外部上/下請求的樓層后,電梯同時清除了這兩個請求。程序在仿真的時候并未出現(xiàn)方才描述的問題,因此,在排除程序內(nèi)部邏輯的問題后,可能的原因還有兩個,1、ISE在綜合電路時未遵循預設(shè)邏輯;2、程序邏輯中存在競爭險象。經(jīng)過核查,發(fā)現(xiàn)verilog在綜合電路時所發(fā)出的警告中并未提及對我所設(shè)計的電路的自動修改情況,在考慮到verilog的口碑的情況下,我更愿意相信是程序邏輯中存在競爭險象。經(jīng)檢查,果然是這樣。開門后,三條請求鏈的值都有可能會被修改,而這些請求鏈又彼此作為對方修改請求鏈的判定條件,因此程序中存在競爭險象!解決方法:在開門時,用讀取三條請求鏈的副本作為判定條件的方式,取代了之前的直接讀取請求鏈作為判定條件的方式。請求鏈被修改的1/20秒后更新請求鏈的副本,使之與最新的請求鏈同步。問題解決!模塊內(nèi)部圖(1)主模塊圖2.11主模塊圖輸入:CLK_Ori:其中輸入依次為:時鐘UserOutsideRequestF1:用戶外部一樓請求UserOutsideRequestF8:用戶外部八樓請求UserOutsideRequestUpF3:用戶外部三樓向上請求UserOutsideRequestDownF3:用戶外部三樓向下請求UserOutsideRequestUpF6:用戶外部六樓向上請求UserOutsideRequestDownF6:用戶外部六樓向下請求UserInsideRequestF1:用戶內(nèi)部一樓請求UserInsideRequestF3:用戶內(nèi)部三樓請求UserInsideRequestF6:用戶內(nèi)部六樓請求UserInsideRequestF8:用戶內(nèi)部八樓請求UserDoorClose:開關(guān)門按鍵rst:重置按鍵輸出:d1_wx:七段譯碼器數(shù)位接口d1_out:七段譯碼器數(shù)字接口LightPower:電源燈LightDoorOpen:開門狀態(tài)燈LightDirectionDown:電梯下行指示燈LightDirectionUp:電梯上行指示燈LightF1:一樓指示燈LightF3:三樓指示燈LightF6:六樓指示燈LightF8:八樓指示燈(2)分頻模塊圖2.12分頻模塊圖輸入CLK:系統(tǒng)時鐘輸出SecClk:1HZ時鐘OutClk:七段譯碼器顯示時鐘CLK_1o20:20HZ時鐘(3)電梯請求控制模塊圖2.13電梯請求控制模塊圖輸入rst:重置按鈕信號CLK_1o20:20HZ的時鐘UserOutsideRequestF1:用戶外部一樓請求UserOutsideRequestF8:用戶外部八樓請求UserOutsideRequestUpF3:用戶外部三樓向上請求UserOutsideRequestUpF6:用戶外部六樓向上請求UserOutsideRequestDownF3:戶外部三樓向下請求UserOutsideRequestDownF6:用戶外部六樓向下請求UserInsideRequestF1:用戶內(nèi)部一樓請求UserInsideRequestF3:用戶內(nèi)部三樓請求UserInsideRequestF6:用戶內(nèi)部六樓請求UserInsideRequestF8:用戶內(nèi)部八樓請求LiftDirectionUp:電梯的運行方向,1表示向上[1:0]DoorStateChangedFlag:電梯開關(guān)門信號,[0]是開門信號DoorStateOpen:電梯門狀態(tài),1表示開門LiftIsStop:電梯運行狀態(tài),1表示停止[7:0]LiftCurrentFloor:電梯當前樓層LFCMRequireNewRound:來自LFCM的請求新輪的信號輸出LFCMStartNewRound:令LFCM開始新一輪的信號[7:0]UserOutsideUpSelection_True:用戶外部向上請求鏈[7:0]UserOutsideDownSelection_True:用戶外部向下請求鏈[7:0]UserInsideSelection_True:用戶內(nèi)部請求鏈Rst_Triggered:重置狀態(tài)值,0表示重置中(4)電梯門開關(guān)控制模塊圖2.14電梯門開關(guān)請求控制模塊圖輸入CLK_1o20:20HZ的時鐘UserOutsideRequestF1:用戶外部一樓請求UserOutsideRequestF8:用戶外部八樓請求UserOutsideRequestUpF3:用戶外部三樓向上請求UserOutsideRequestUpF6:用戶外部六樓向上請求UserOutsideRequestDownF3:用戶外部三樓向下請求UserOutsideRequestDownF6:用戶外部六樓向下請求UserDoorClose:開關(guān)門按鍵[7:0]LiftCurrentFloor:電梯當前樓層LiftIsStop:電梯運行狀態(tài),1表示停止LERMRequireDoorOpen:來自LERM的請求開門信號輸出[1:0]DoorStateChangedFlag:電梯開關(guān)門標志脈沖,其中[0]是開門脈沖,[1]是關(guān)門脈沖。DoorStateOpen:電梯是否出于開門狀態(tài),1表示開門中,0表示關(guān)門中。[3:0]DoorCloseCountdown:關(guān)門倒計時。(5)LED燈控制模塊圖2.15LED燈控制模塊圖輸入RstReady_DirectionToDown_n:電梯方向強制扭轉(zhuǎn)向下信號,0表示生效LiftIsStop:電梯是否處于停止運行狀態(tài),1表示停止、0表示運行DoorStateOpen:電梯是否出于開門狀態(tài),1表示開門中,0表示關(guān)門中[7:0]LiftCurrentFloor:電梯當前樓層狀態(tài),輸入共八位,低位到高位的每一位都與低到高樓層一一對應(yīng)[1:0]DoorStateChangedFlag:電梯開關(guān)門信號,[0]是開門信號LiftDirectionUp:電梯的運行方向,1表示向上CLK_Ori:系統(tǒng)時鐘輸出UpLight:上行燈,1表示亮DownLight:下行燈,1表示亮Floor1Light:一樓指示燈,1表示亮Floor3Light:三樓指示燈,1表示亮Floor6Light:六樓指示燈,1表示亮Floor8Light:八樓指示燈,1表示亮PowerLight:電源燈,1表示亮DoorLight:門開關(guān)指示燈,1表示亮(6)電梯運行總控模塊此部分由隊友完成,詳參隊友報告。(7)電梯每次運行模塊此部分由隊友完成,詳參隊友報告。(8)七段譯碼器顯示模塊此部分由隊友完成,詳參隊友報告。功能測試手動開關(guān)門測試電梯停在六樓且門關(guān)閉時,撥動六樓外部向上/向下請求鍵;按動開門鍵一次;再按動開門鍵一次。圖2.16開關(guān)門測試圖-開門圖2.17開關(guān)門測試圖-關(guān)門無論是撥動六樓外部向上/向下請求鍵中的哪一個,電梯門均會打開,即關(guān)門倒計時從五開始每秒自減,且表示開門的指示燈點亮;此時按下開關(guān)門按鈕后,計時清零,表示開門的指示燈熄滅;再按下開關(guān)門按鈕后電梯門再次打開。重置功能測試在電梯靜止在一樓時,按下外部八樓按鍵,等待電梯運行到二樓后按下重置鍵。待電梯面板沒有任何變化后再次按下重置鍵,然后按下外部八樓按鍵。圖2.18重置測試圖-二樓圖2.19重置測試圖-三樓按下外部八樓請求后電梯即開始九秒運行倒計時,然后等待計時結(jié)束后升至二樓。此時按下重置按鍵。電梯繼續(xù)向上運行,然后到達三樓。此時電梯方向燈改為顯示電梯向下運行。電梯在倒計時結(jié)束后到達二樓,然后到達一樓。等待電梯面板無變化后按下外部八樓請求,此時電梯開始九秒倒計時,開始爬向八樓。常規(guī)使用測試在電梯停在一樓且不處于重置狀態(tài)時撥動三樓外部向上和三樓外部向下開關(guān),然后在電梯運行至二樓時撥動內(nèi)部一樓開關(guān)和內(nèi)部八樓開關(guān)。圖2.20常規(guī)使用測試圖-向上三樓開門圖2.21常規(guī)使用測試圖-八樓關(guān)門后換向圖2.22常規(guī)使用測試圖-向下至三樓開門按下外部三樓向上/向下請求后電梯即開始九秒運行倒計時,然后等待計時結(jié)束后升至二樓。此時撥動一樓/八樓內(nèi)部請求開關(guān)。電梯繼續(xù)向上運行,然后到達三樓,開門,關(guān)門,繼續(xù)運行。電梯連續(xù)運行到八樓后開門關(guān)門,電梯轉(zhuǎn)向,繼續(xù)連續(xù)運行直至到達三樓。此時電梯開門、關(guān)門,并停止運行。總結(jié)與心得課設(shè)總結(jié)為了實現(xiàn)電梯控制器的功能要求,作了如下幾點工作:產(chǎn)生用戶請求鏈控制電梯開關(guān)門協(xié)調(diào)各模塊之間的通信課設(shè)心得在本次verilog程式設(shè)計實驗中,我似乎遇到了所有的我可能會遇到的情況?,F(xiàn)在想來想必是我們比較“奇葩”的設(shè)計模式所決定的。是的,不同于很多同學的以寄存器的值作為模塊間的通信根據(jù)的做法——即在每個時鐘周期,在模塊內(nèi)部根據(jù)寄存器的值作為判定依據(jù)進行適宜操作的做法,我們的程序模塊大多是采用信號驅(qū)動的,即根據(jù)信號的定位、以寄存器的值作為輔助執(zhí)行預設(shè)的邏輯。在程序中的體現(xiàn)就是:我們的程序的敏感變量表中有很多非CLK的電平/上升沿,而別人的程序中大多主要以CLK作為敏感變量。正是因為敏感變量表的不一致,我們很難做到將多個內(nèi)部模塊進行合并——一個寄存器只能在一個always中改變并賦值,這是verilog為了避免競爭/冒險的一種優(yōu)化措施,若違反這一規(guī)則,則會產(chǎn)生一個錯誤通知,使代碼無法綜合。正是如此,我們?yōu)榱藢崿F(xiàn)模塊之間/內(nèi)部的通訊,不得不采用大量的寄存器、繁復的控制邏輯。這些使得電路體積日益臃腫,對細節(jié)的把握的要求也越來越高。然而也正是如此,這次課設(shè)為我?guī)砹司薮蟮氖斋@,因為我付出了更多、思考了更多,我擁有了更多的失敗的教訓。這次實驗的心得可歸結(jié)為如下幾點:警惕競爭/冒險:在讀取寄存器中的值的時候,當這個值可能會在被讀取的瞬間改變時,就會出現(xiàn)競爭/冒險的情況。多使用鐘控觸發(fā)器:時序邏輯電路更容易受到電平波動的影響,因此可能會帶來很多難以預測的問題。使用更加安全的鐘控觸發(fā)器可以很好地避免這一問題。多使用狀態(tài)而非脈沖:狀態(tài)比短脈沖更容易產(chǎn)生、維護和使用!脈沖更多是用在觸發(fā)器中,而這樣就不可避免地帶來更多的模塊、更多的代碼量、更難以維護的代碼(說明見本小節(jié))。程序員之間的合作不等于一加一:一個程序員一個星期可以完成的任務(wù),由兩個程序合作完成可能需要兩個星期。我們需要討論出使兩個人都信服的方案,我們的任務(wù)分配要公平合理,我們在寫程序的時候需要討論具體細節(jié),而這些都需要額外的精力。在我書寫自己的代碼的時候,我經(jīng)常假定我同伴輸送給我的狀態(tài)/信號是符合我預期的。隊友的代碼主體上由于之前的集中討論,并無大礙,可是具體實現(xiàn)細節(jié)上有時就會與我之前的假設(shè)偏離甚至相悖。這就導致我的程序為了配合隊友,需要進行大量微調(diào),甚至是大改,這也是合作效率并不簡單地等于一加一的原因之一。解決的方法很簡單:討論出更加細致的模塊設(shè)計方案!盡量減低模塊之間的耦合程度!給出明確、沒有歧義且經(jīng)過雙方共同確認的接口表文檔!如果我們團隊當初這么做,定能在開發(fā)過程中少走更多彎路。參考文獻無附錄(源程序)主模塊`timescale1ns/1ps////////////////////////////////////////////////////////////////////////////////////Company://Engineer:////CreateDate:06:47:4509/27/2015//DesignName://ModuleName:main//ProjectName://TargetDevices://Toolversions://Description:////Dependencies:////Revision://Revision0.01-FileCreated//AdditionalComments:////////////////////////////////////////////////////////////////////////////////////modulemain(inputCLK_Ori,inputUserOutsideRequestF1_Ex,inputUserOutsideRequestF8_Ex,inputUserOutsideRequestUpF3_Ex,inputUserOutsideRequestUpF6_Ex,inputUserOutsideRequestDownF3_Ex,inputUserOutsideRequestDownF6_Ex,inputUserInsideRequestF1_Ex,inputUserInsideRequestF3_Ex,inputUserInsideRequestF6_Ex,inputUserInsideRequestF8_Ex,inputUserDoorClose_Ex,inputrst_Ex,output[3:0]d1_wx,output[7:0]d1_out,outputLightPower,outputLightDoorOpen,outputLightDirectionDown,outputLightDirectionUp,outputLightF1,outputLightF3,outputLightF6,outputLightF8);//引腳IBUFGIBUFG_UserOutsideRequestF1(.I(UserOutsideRequestF1_Ex),.O(UserOutsideRequestF1));IBUFGIBUFG_UserOutsideRequestF8(.I(UserOutsideRequestF8_Ex),.O(UserOutsideRequestF8));IBUFGIBUFG_UserOutsideRequestUpF3(.I(UserOutsideRequestUpF3_Ex),.O(UserOutsideRequestUpF3));IBUFGIBUFG_UserOutsideRequestUpF6(.I(UserOutsideRequestUpF6_Ex),.O(UserOutsideRequestUpF6));IBUFGIBUFG_UserOutsideRequestDownF3(.I(UserOutsideRequestDownF3_Ex),.O(UserOutsideRequestDownF3));IBUFGIBUFG_UserOutsideRequestDownF6(.I(UserOutsideRequestDownF6_Ex),.O(UserOutsideRequestDownF6));IBUFGIBUFG_UserInsideRequestF1(.I(UserInsideRequestF1_Ex),.O(UserInsideRequestF1));IBUFGIBUFG_UserInsideRequestF3(.I(UserInsideRequestF3_Ex),.O(UserInsideRequestF3));IBUFGIBUFG_UserInsideRequestF6(.I(UserInsideRequestF6_Ex),.O(UserInsideRequestF6));IBUFGIBUFG_UserInsideRequestF8(.I(UserInsideRequestF8_Ex),.O(UserInsideRequestF8));IBUFGIBUFG_UserDoorClose(.I(UserDoorClose_Ex),.O(UserDoorClose));IBUFGIBUFG_rst(.I(rst_Ex),.O(rst));//內(nèi)部線路wireSecClk;wireOutClk;wireCLK_1o20;wireLFCMStartNewRound;wire[1:0]DoorStateChangedFlag;//0開,1關(guān)wireDoorStateOpen;//1開,0關(guān)wire[3:0]DoorCloseCountdownwire[7:0]LiftCurrentFloor;wireLERMRequireDoorOpen;wire[3:0]LiftMoveCountdown;wire[3:0]DoorCloseCountdown;wire[3:0]LiftCurrentFloor_4;wireLiftDirectionUp;wireLFCMRequireNewRound;wireLiftIsStop;wireUpLight;wireDownLight;wireFloor1Light;wireFloor3Light;wireFloor6Light;wireFloor8Light;wirePowerLight;wireRst_Triggered;wireRstReady_DirectionToDown_n;wireDoorLight;wire[7:0]UserInsideSelection_True;wire[7:0]UserOutsideUpSelection_True;wire[7:0]UserOutsideDownSelection_True;//1.系統(tǒng)時鐘分頻模塊DivideModuleDivideModule_Main(.CLK(CLK_Ori),.SecClk(SecClk),.OutClk(OutClk),.CLK_1o20(CLK_1o20));//2.電梯內(nèi)外請求鏈控制模塊LiftRequestControlModuleLiftRequestControlModule_Main(.rst(rst),.Rst_Triggered(Rst_Triggered),.CLK_1o20(CLK_1o20),.CLK_Ori(CLK_Ori),.UserOutsideRequestF1(UserOutsideRequestF1),.UserOutsideRequestF8(UserOutsideRequestF8),.UserOutsideRequestUpF3(UserOutsideRequestUpF3),.UserOutsideRequestUpF6(UserOutsideRequestUpF6),.UserOutsideRequestDownF3(UserOutsideRequestDownF3),.UserOutsideRequestDownF6(UserOutsideRequestDownF6),.UserInsideRequestF1(UserInsideRequestF1),.UserInsideRequestF3(UserInsideRequestF3),.UserInsideRequestF6(UserInsideRequestF6),.UserInsideRequestF8(UserInsideRequestF8),.LiftDirectionUp(LiftDirectionUp),.DoorStateChangedFlag(DoorStateChangedFlag),.DoorStateOpen(DoorStateOpen),.LiftIsStop(LiftIsStop),.LiftCurrentFloor(LiftCurrentFloor),.LFCMRequireNewRound(LFCMRequireNewRound),.LFCMStartNewRound(LFCMStartNewRound),.UserInsideSelection_True(UserInsideSelection_True),.UserOutsideUpSelection_True(UserOutsideUpSelection_True),.UserOutsideDownSelection_True(UserOutsideDownSelection_True));//3.電梯門開關(guān)控制模塊LiftDoorControlModuleLiftDoorControlModule_main(.CLK_1o20(CLK_1o20), .Rst_Triggered(Rst_Triggered),.UserOutsideRequestF1(UserOutsideRequestF1),.UserOutsideRequestF8(UserOutsideRequestF8),.UserOutsideRequestUpF3(UserOutsideRequestUpF3),.UserOutsideRequestUpF6(UserOutsideRequestUpF6),.UserOutsideRequestDownF3(UserOutsideRequestDownF3),.UserOutsideRequestDownF6(UserOutsideRequestDownF6),.UserDoorClose(UserDoorClose),.LiftCurrentFloor(LiftCurrentFloor),.LiftIsStop(LiftIsStop),.LERMRequireDoorOpen(LERMRequireDoorOpen),.DoorStateChangedFlag(DoorStateChangedFlag),.DoorStateOpen(DoorStateOpen),.DoorCloseCountdown(DoorCloseCountdown));//4.電梯單次運行模塊LiftEachRunModuleLiftEachRunModule_Main(.DoorStateOpen(DoorStateOpen),.Rst_Triggered(Rst_Triggered),.RstReady_DirectionToDown_n(RstReady_DirectionToDown_n),.LiftIsStop(LiftIsStop),.SecClk(SecClk),.LiftDirectionUp(LiftDirectionUp),.LiftCurrentFloor(LiftCurrentFloor),.UserInsideSelection_True(UserInsideSelection_True),.UserOutsideUpSelection_True(UserOutsideUpSelection_True),.UserOutsideDownSelection_True(UserOutsideDownSelection_True),.LERMRequireDoorOpen(LERMRequireDoorOpen),.LiftMoveCountdown(LiftMoveCountdown),.LiftCurrentFloor_4(LiftCurrentFloor_4));//5.電梯運行總控模塊LiftHeadCountraMouleLiftHeadCountraMoule_Main(.LFCMStartNewRound(LFCMStartNewRound),.DoorStateChangedFlag(DoorStateChangedFlag),.UserInsideSelection_True(UserInsideSelection_True),.UserOutsideUpSelection_True(UserOutsideUpSelection_True),.UserOutsideDownSelection_True(UserOutsideDownSelection_True),.LiftCurrentFloor(LiftCurrentFloor),.LiftDirectionUp(LiftDirectionUp),.LFCMRequireNewRound(LFCMRequireNewRound),.LiftIsStop(LiftIsStop));//6.LED燈控制模塊LightShowModuleLightShowModule_Main(.CLK_Ori(CLK_Ori),.DoorStateOpen(DoorStateOpen),.LiftCurrentFloor(LiftCurrentFloor),.DoorStateChangedFlag(DoorStateChangedFlag),.LiftDirectionUp(LiftDirectionUp),.LERMRequireDoorOpen(LERMRequireDoorOpen),.UpLight(LightDirectionUp),.LiftIsStop(LiftIsStop),.DownLight(LightDirectionDown),.Floor1Light(LightF1),.Floor3Light(LightF3),.Floor6Light(LightF6),.Floor8Light(LightF8),.PowerLight(LightPower),.DoorLight(LightDoorOpen),.RstReady_DirectionToDown_n(RstReady_DirectionToDown_n));//7.七段譯碼器顯示模塊YiMAQiXianShiModuleYiMAQiXianShiModule(.CLK_Ori(CLK_Ori),.MCLK9(OutClk),.d_num_CurrentFloor(LiftCurrentFloor_4),.d_num_DoorCloseCountDown(DoorCloseCountdown),.d_num_LiftMoveCountDown(LiftMoveCountdown),.d1_wx(d1_wx),.d1_out(d1_out));endmodule時鐘分頻模塊`timescale1ns/1ps////////////////////////////////////////////////////////////////////////////////////Company://Engineer:////CreateDate:21:25:4709/23/2015//DesignName://ModuleName:DivideModule//ProjectName://TargetDevices://Toolversions://Description:////Dependencies:////Revision://Revision0.01-FileCreated//AdditionalComments:////////////////////////////////////////////////////////////////////////////////////moduleDivideModule(CLK,SecClk,OutClk,CLK_1o20);inputCLK;outputregSecClk;outputregOutClk;outputregCLK_1o20;reg[30:0]count1,count2,count4;initialbegincount1=0; count2=0; count4=0; SecClk=0; OutClk=0; CLK_1o20=0;end//只改變一次always@(posedgeCLK) //if(count1==6250000)//1/4 if(count1==12500000)//一半//if(count1==25000000) //if(count1==20) //仿真 begincount1=0;SecClk=~SecClk; end else count1=count1+1; always@(posedgeCLK) if(count2==20000) begincount2=0;OutClk=~OutClk; end else count2=count2+1; //分頻,1/20Secalways@(posedgeCLK)begin //if(count4==312500)begin//1/4 if(count4==625000)begin//一半 //if(co
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 程序開發(fā)合同范本
- 苗木收貨協(xié)議書
- 蘋果果合同范本
- 藤椒承包協(xié)議合同
- 視頻制作協(xié)議書
- 認的兄妹協(xié)議書
- 討薪委托協(xié)議書
- 設(shè)備贊助協(xié)議書
- 設(shè)計變更協(xié)議書
- 試用期合同協(xié)議
- 2025中原農(nóng)業(yè)保險股份有限公司招聘67人筆試備考重點試題及答案解析
- 2025中原農(nóng)業(yè)保險股份有限公司招聘67人備考考試試題及答案解析
- 2025年違紀違法典型案例個人學習心得體會
- 2025年度河北省機關(guān)事業(yè)單位技術(shù)工人晉升高級工考試練習題附正確答案
- GB/T 17981-2025空氣調(diào)節(jié)系統(tǒng)經(jīng)濟運行
- 2025 年高職酒店管理與數(shù)字化運營(智能服務(wù))試題及答案
- 《公司治理》期末考試復習題庫(含答案)
- 藥物臨床試驗質(zhì)量管理規(guī)范(GCP)培訓班考核試卷及答案
- 四川專升本《軍事理論》核心知識點考試復習題庫(附答案)
- 加油站安全生產(chǎn)責任制考核記錄
- 供應(yīng)鏈管理專業(yè)畢業(yè)生自我鑒定范文
評論
0/150
提交評論