




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
③RTL電路圖圖3.2.6系統(tǒng)原理圖設(shè)計及引腳分配頂層模塊硬件連線及引腳配置:《可編程邏輯設(shè)計課程設(shè)計》:三眼電圖形刺激器設(shè)計(棋盤格)系統(tǒng)原理圖設(shè)計及引腳分配圖3.3.1RTL圖圖3.3.2仿真結(jié)果:圖3.3.3硬件連線圖圖3.3.4《可編程邏輯設(shè)計課程設(shè)計》:三眼電圖形刺激器設(shè)計(棋盤格)結(jié)果分析及心得體會硬件顯示結(jié)果(部分)結(jié)果分析及心得體會由硬件實驗結(jié)果可知,本次設(shè)計的眼電刺激圖形滿足實驗要求,即每隔5S循環(huán)顯示一種圖形,顏色有黑白、紅綠、藍(lán)綠,圖形形式有橫豎條紋和方格,顯示方式有全屏和半屏,共18種狀態(tài)。本次實驗做了很多前期準(zhǔn)備,包括認(rèn)真閱讀相關(guān)文獻(xiàn)、與同學(xué)進(jìn)行討論和交流等。并且在編寫程序后多次修改優(yōu)化,反復(fù)調(diào)試。在最初硬件顯示調(diào)試時沒有屏幕輸出顯示,檢查程序并沒有錯,檢查硬件時發(fā)現(xiàn)是由于硬件VGA端口有RGB各兩個,而本設(shè)計實際使用為其中三個,引腳分配與硬件不相符導(dǎo)致結(jié)果無法正常顯示,調(diào)換跳線帽位置后顯示結(jié)果正確??傮w來說本次課程設(shè)計過程曲折,但最終還是圓滿地完成了任務(wù),實現(xiàn)了了8x6的棋盤顯示。通過此次課程設(shè)計,我收獲頗豐。對于自己負(fù)責(zé)的課題,VGA的時序關(guān)系以及顏色成像的原理。同時,對于本次設(shè)計過程中幫助確定方案思路及硬件調(diào)試的組員王孜同學(xué)表示感謝。參考文獻(xiàn)[1]《EDA技術(shù)與VHDL》第3版潘松,黃繼業(yè)清華大學(xué)出版社2006.6[2]《EDA技術(shù)基礎(chǔ)》實驗指導(dǎo)書趙曉明[3]《基于FPGA的VGA顯示模塊設(shè)計》張亞平,賀占莊《可編程邏輯設(shè)計課程設(shè)計》:病房溫度測控系統(tǒng)的設(shè)計病房溫度測控系統(tǒng)的設(shè)計王孜重慶大學(xué)生物醫(yī)學(xué)工程聯(lián)合學(xué)院生物醫(yī)學(xué)工程2班20106836設(shè)計要求(1)FPGA控制溫度傳感器對病房溫度進(jìn)行監(jiān)控;(2)將檢測的溫度值實時顯示在數(shù)碼管上(十進(jìn)制顯示);(3)當(dāng)溫度值高于28度時,點亮FPGA主板LED1指示燈(模擬通知空調(diào)室降溫),當(dāng)溫度值高于30度時,通過蜂鳴器發(fā)出間隔時間為1S的報警聲,連續(xù)5聲,點亮FPGA主板LED2。當(dāng)溫度值低于22度時,鳴器發(fā)出間隔時間為500MS的報警聲,連續(xù)3聲后點亮FPGA主板LED3指示燈(模擬通知空調(diào)室升溫)。其余狀態(tài),LED4亮。(4)不同溫度情況,用不同占空比PWM信號模擬電機(jī)調(diào)速。設(shè)計思路 為滿足設(shè)計要求作出以下針對性設(shè)計:采用I2C接口的LM75A溫度傳感器采集溫度;采用四位數(shù)碼管將LM75A采集并由FPGA轉(zhuǎn)換格式后的數(shù)據(jù)顯示出來;將0~50度分為4個溫度區(qū)間,分情況執(zhí)行“要求”中的操作。為了便于實驗,溫度區(qū)間劃分為:0~32,33~37,38~40,41~50。這樣的話可以通過使用電烙鐵加熱芯片快速的觀察實驗效果?!犊删幊踢壿嬙O(shè)計課程設(shè)計》:病房溫度測控系統(tǒng)的設(shè)計所用硬件所用的硬件CycloneIV開發(fā)板1塊紅色LED5個LM75A1片按鍵1個數(shù)碼管4位蜂鳴器1個 CycloneIV開發(fā)板EP4CE10E22C8是ALTER的CYCLONEIV四代FPGA器件,采用優(yōu)化后的60nm工藝,降低了內(nèi)核電壓,和前一代相比,總功耗降低了25%,器件含有1萬多個寄存器資源Altera新的Cyclone?IV系列FPGA器件鞏固了Cyclone系列在低成本、低功耗FPGA市場的領(lǐng)導(dǎo)地位,并且目前提供集成收發(fā)器功能的型號。CycloneIV器件旨在用于大批量,成本敏感的應(yīng)用,使系統(tǒng)設(shè)計師在降低成本的同時又能夠滿足不斷增長的帶寬要求。CycloneIV器件系列是建立在一個優(yōu)化的低功耗工藝基礎(chǔ)之上,并提供E和GX兩種型號。CycloneIVE—最低的功耗,通過最低的成本實現(xiàn)較高的功能性。右表顯示了所用器件的資源。LM75ALM75A是一個使用了內(nèi)置帶隙溫度傳感器和Σ-△模數(shù)轉(zhuǎn)換技術(shù)的溫度-數(shù)字轉(zhuǎn)換器。它也是一個溫度檢測器,可提供一個過熱檢測輸出。LM75A包含許多數(shù)據(jù)寄存器:配置寄存器(Conf),用來存儲器件的某些配置,如器件的工作模式、OS工作模式、OS極性和OS故障隊列等;溫度寄存器(Temp),用來存儲讀取的數(shù)字溫度;設(shè)定點寄存器(Tos&Thyst),用來存儲可編程的過熱關(guān)斷和滯后限制,器件通過2線的串行I2C總線接口與控制器通信。LM75A還包含一個開漏輸出(OS),當(dāng)溫度超過編程限制的值時該輸出有效。LM75A有3個可選的邏輯地址管腳,使得同一總線上可同時連接8個器件而不發(fā)生地址沖突。LM75A可配置成不同的工作條件。它可設(shè)置成在正常工作模式下周期性地對環(huán)境溫度進(jìn)行監(jiān)控或進(jìn)入關(guān)斷模式來將器件功耗降至最低。OS輸出有2種可選的工作模式:OS比較器模式和OS中斷模式。OS輸出可選擇高電平或低電平有效。故障隊列和設(shè)定點限制可編程,為了激活OS輸出,故障隊列定義了許多連續(xù)的故障。溫度寄存器通常存放著一個11位的二進(jìn)制數(shù)的補(bǔ)碼,用來實現(xiàn)0.125℃的精度。這個高精度在需要精確地測量溫度偏移或超出限制范圍的應(yīng)用中非常有用。正常工作模式下,當(dāng)器件上電時,OS工作在比較器模式,溫度閾值為80℃,滯后75℃,這時,LM75A就可用作一個具有以上預(yù)定義溫度設(shè)定點的獨立的溫度控制器。特性1.器件可以完全取代工業(yè)標(biāo)準(zhǔn)的LM75,并提供了良好的溫度精度(0.125℃),單個器件的電源可超出2.8V~5.5V的范圍。2.小型8腳封裝:SO8和TSSOP8。3.具有I2C總線接口,同一總線上可連接多達(dá)8個器件。4.電源電壓范圍:2.8V~5.5V。5.溫度范圍:-55℃~+125℃。6.提供0.125℃的精度的11位的ADC。7.溫度精度:-25℃~+100℃時為±2℃-55℃~+125℃時為±3℃8.可編程溫度閾值和滯后設(shè)定點。9.為了降低功耗,關(guān)斷模式下消耗的電流僅為3.5uA。10.上電時器件可用作一個獨立的溫度控制器。11.ESD保護(hù):JESD22-A114為2000VHBM,JESD22-A115為200V和JESD22-C101為1000VCDM。12.超過100mA的JESDEC標(biāo)準(zhǔn)JESD78要進(jìn)行栓鎖測試(Latch-uptesting)。系統(tǒng)功能描述 按下rst按鍵,使系統(tǒng)復(fù)位到預(yù)定的狀態(tài)。此時數(shù)碼管顯示”000C“,一段時間后,顯示當(dāng)前溫度的整數(shù)值。 溫度在33~37度LED4亮,為預(yù)設(shè)的正常溫度,PWM驅(qū)動的LED中等亮度;溫度在38~40度LED3亮,PWM驅(qū)動的LED中等亮度;溫度在從40度以下進(jìn)入到41度以上時,蜂鳴器以1s為間隔鳴叫5次,之后LED2點亮。PWM控制的LED高亮度;溫度在從32度以上進(jìn)入到31度以上時,蜂鳴器以500ms為間隔鳴叫3次,之后LED3點亮。PWM控制的LED低亮度;《可編程邏輯設(shè)計課程設(shè)計》:病房溫度測控系統(tǒng)的設(shè)計系統(tǒng)模塊系統(tǒng)模塊如圖,把系統(tǒng)的實現(xiàn)分成5個模塊。分別為:LM75A,數(shù)碼管,數(shù)據(jù)轉(zhuǎn)換與處理,蜂鳴器,PWM。其中LM75A模塊負(fù)責(zé)與溫度傳感器的接口,通過I2C獲得溫度數(shù)據(jù)。數(shù)據(jù)轉(zhuǎn)換與處理模塊是系統(tǒng)中功能最復(fù)雜的模塊,負(fù)責(zé)4種溫度狀態(tài)的判斷與轉(zhuǎn)換。數(shù)碼管模塊負(fù)責(zé)將溫度傳感器的數(shù)據(jù)動態(tài)掃描顯示在數(shù)碼管上。蜂鳴器和PWM模塊的功能與其命名相同。其中最難得一點是正確的實現(xiàn)蜂鳴器鳴叫和隨后的LED點亮。溫度過高提示時,蜂鳴器間隔1s響5次,之后點亮LED。要求從38~40度到41~50度溫度時進(jìn)行一次,也就是說,只有在40到41度變化之后才使蜂鳴器鳴叫,溫度反向變化,或是停在41~50區(qū)間都不會使蜂鳴器鳴叫。換言之,要判斷溫度從40度變化到41度,只有唯一的經(jīng)歷這一過程才會使蜂鳴器鳴叫。溫度過低的蜂鳴器警報也是如此。所以,除了編寫4個溫度區(qū)間的狀態(tài)機(jī)外,要單獨考慮過冷和過熱的蜂鳴器警報。將上述內(nèi)容圖形化:蜂鳴器模塊采用了狀態(tài)機(jī)控制蜂鳴器在特定的時間間隔鳴叫,并且鳴叫后點亮LED。《可編程邏輯設(shè)計課程設(shè)計》:病房溫度測控系統(tǒng)的設(shè)計仿真代碼(見附錄)仿真 因為使用的是QuartusII11.064-bit版本,沒有仿真功能,所以借助第三方仿真工具M(jìn)odelSimSE10.0c64-bit。 Modelsim介紹Mentor公司的ModelSim是業(yè)界最優(yōu)秀的HDL語言仿真軟件,它能提供友好的仿真環(huán)境,是業(yè)界唯一的單內(nèi)核支持VHDL和Verilog混合仿真的仿真器。它采用直接優(yōu)化的編譯技術(shù)、Tcl/Tk技術(shù)、和單一內(nèi)核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺無關(guān),便于保護(hù)IP核,個性化的圖形界面和用戶接口,為用戶加快調(diào)錯提供強(qiáng)有力的手段,是FPGA/ASIC設(shè)計的首選仿真軟件。主要特點:·RTL和門級優(yōu)化,本地編譯結(jié)構(gòu),編譯仿真速度快,跨平臺跨版本仿真;·單內(nèi)核VHDL和Verilog混合仿真;·源代碼模版和助手,項目管理;·集成了性能分析、波形比較、代碼覆蓋、數(shù)據(jù)流ChaseX、SignalSpy、虛擬對象VirtualObject、Memory窗口、Assertion窗口、源碼窗口顯示信號值、信號條件斷點等眾多調(diào)試功能;·C和Tcl/Tk接口,C調(diào)試;·對SystemC的直接支持,和HDL任意混合;·支持SystemVerilog的設(shè)計功能;·對系統(tǒng)級描述語言的最全面支持,SystemVerilog,SystemC,PSL;·ASICSignoff?!た梢詥为毣蛲瑫r進(jìn)行行為(behavioral)、RTL級、和門級(gate-level)的代碼。ModelSim分幾種不同的版本:SE、PE、LE和OEM,其中SE是最高級的版本,而集成在Actel、Atmel、Altera、Xilinx以及Lattice等FPGA廠商設(shè)計工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有較大差別,比如對于大家都關(guān)心的仿真速度問題,以Xilinx公司提供的OEM版本ModelSimXE為例,對于代碼少于40000行的設(shè)計,ModelSimSE比ModelSimXE要快10倍;對于代碼超過40000行的設(shè)計,ModelSimSE要比ModelSimXE快近40倍。ModelSimSE支持PC、UNIX和LINUX混合平臺;提供全面完善以及高性能的驗證功能;全面支持業(yè)界廣泛的標(biāo)準(zhǔn);MentorGraphics公司提供業(yè)界最好的技術(shù)支持與服務(wù)。 使用ModelSim時發(fā)現(xiàn),這個軟件功能很強(qiáng)大,甚至提供斷點功能,還有很多高級功能,比如Dataflow。由于我們做的工程比較簡單,所以沒有用到這些功能。在熟練地掌握這些軟件并養(yǎng)成良好的工作習(xí)慣之前,這些軟件并不能有效的提供幫助。這個工程是我第一次做的功能比較綜合的FPGA,完全沒有仿真,只是按照自己的思路加上電路板上的實驗效果調(diào)試出來的。以后在做更復(fù)雜的工程時,會嘗試進(jìn)行仿真,提高效率。整個工程中,大概有三種功能型結(jié)構(gòu):1.時鐘產(chǎn)生,即為分頻;2.由case語句產(chǎn)生的狀態(tài)機(jī);3.由if語句組成的判斷。所以相同功能的模塊就不進(jìn)行仿真了。以下是時序仿真結(jié)果:數(shù)碼管動態(tài)掃描模塊仿真命令:forceclk11,02–repeat2 Run@1000000使用四位共陰數(shù)碼管,輸入x”0123”,可以觀察到位選信號和段碼的改變,即動態(tài)顯示的原理。時鐘產(chǎn)生模塊仿真命令:forceclk11,02–repeat2 Run–all Break數(shù)據(jù)轉(zhuǎn)換與控制模塊仿真命令:forceclk11,02–repeat2 用force設(shè)定某時間段datain的值,模擬從LM75獲取數(shù)據(jù) Run-all break PWM模塊仿真命令:forceclk11,02–repeat2 用force設(shè)定某時間段dy的值,模擬從convert獲取數(shù)據(jù) Run-all break 可以看出pwm占空比的變化?!犊删幊踢壿嬙O(shè)計課程設(shè)計》:病房溫度測控系統(tǒng)的設(shè)計SignalTapII蜂鳴器模塊仿真命令:forceclk11,02–repeat2 用force設(shè)定某時間段datain的值,模擬從LM75獲取數(shù)據(jù) Run-all break 可以看出蜂鳴器正確的鳴叫,而且在之后點亮LED。各溫度區(qū)間LED點亮情況也正確。SignalTapII 主要使用SignalTapII觀察系統(tǒng)整個系統(tǒng)和單獨觀察LM75模塊。27C時36C時39C時44C時過熱時蜂鳴器情況過冷時蜂鳴器情況LM75時序數(shù)據(jù)通信主機(jī)和LM75A之間的通信必須嚴(yán)格遵循I2C總線管理定義的規(guī)則。LM75A寄存器讀/寫操作的協(xié)議通過下列描述之后的各個圖來說明:1.通信開始之前,I2C總線必須空閑或者不忙。這就意味著總線上的所有器件都必須釋放SCL和SDA線,SCL和SDA線被總線的上拉電阻拉高。2.由主機(jī)來提供通信所需的SCL時鐘脈沖。在連續(xù)的9個SCL時鐘脈沖作用下,數(shù)據(jù)(8位的數(shù)據(jù)字節(jié)以及緊跟其后的1個應(yīng)答狀態(tài)位)被傳輸。3.在數(shù)據(jù)傳輸過程中,除起始和停止信號外,SDA信號必須保持穩(wěn)定,而SCL信號必須為高。這就表明SDA信號只能在SCL為低時改變。4.S:起始信號,主機(jī)啟動一次通信的信號,SCL為高電平,SDA從高電平變成低電平。5.RS:重復(fù)起始信號,與起始信號相同,用來啟動一個寫命令后的讀命令。6.P:停止信號,主機(jī)停止一次通信的信號,SCL為高電平,SDA從低電平變成高電平。然后總線變成空閑狀態(tài)。7.W:寫位,在寫命令中寫/讀位=0。8.R:讀位,在讀命令中寫/讀位=1。9.A:器件應(yīng)答位,由LM75A返回。當(dāng)器件正確工作時該位為0,否則為1。為了使器件獲得SDA的控制權(quán),這段時間內(nèi)主機(jī)必須釋放SDA線。10.A’:主機(jī)應(yīng)答位,不是由器件返回,而是在讀2字節(jié)的數(shù)據(jù)時由主控器或主機(jī)設(shè)置的。在這個時鐘周期內(nèi),為了告知器件的第一個字節(jié)已經(jīng)讀走并要求器件將第二個字節(jié)放到總線上,主機(jī)必須將SDA線設(shè)為低電平。11.NA:非應(yīng)答位。在這個時鐘周期內(nèi),數(shù)據(jù)傳輸結(jié)束時器件和主機(jī)都必須釋放SDA線,然后由主機(jī)產(chǎn)生停止信號。12.在寫操作協(xié)議中,數(shù)據(jù)從主機(jī)發(fā)送到器件,由主機(jī)控制SDA線,但在器件將應(yīng)答信號發(fā)送到總線的時鐘周期內(nèi)除外。13.在讀操作協(xié)議中,數(shù)據(jù)由器件發(fā)送到總線上,在器件正在將數(shù)據(jù)發(fā)送到總線和控制SDA線的這段時間內(nèi),主機(jī)必須釋放SDA線,但在主器件將應(yīng)答信號發(fā)送到總線的時間周期內(nèi)除外。電路原理圖set_location_assignmentPIN_91-toclkset_location_assignmentPIN_25-torstset_location_assignmentPIN_142-toSCLKset_location_assignmentPIN_141-toSDAset_location_assignmentPIN_128-toweima[0]set_location_assignmentPIN_127-toweima[1]set_location_assignmentPIN_132-toweima[2]set_location_assignmentPIN_129-toweima[3]set_location_assignmentPIN_114-toduanma[0]set_location_assignmentPIN_115-toduanma[1]set_location_assignmentPIN_119-toduanma[2]set_location_assignmentPIN_120-toduanma[3]set_location_assignmentPIN_121-toduanma[4]set_location_assignmentPIN_124-toduanma[5]set_location_assignmentPIN_125-toduanma[6]《可編程邏輯設(shè)計課程設(shè)計》:病房溫度測控系統(tǒng)的設(shè)計電路原理圖set_location_assignmentPIN_126-toduanma[7]《可編程邏輯設(shè)計課程設(shè)計》:病房溫度測控系統(tǒng)的設(shè)計總結(jié)總結(jié) 這是我做的第一個較為復(fù)雜的FPGA工程,因為缺少經(jīng)驗所以調(diào)試了挺久的。但是完成了之后還是學(xué)了很多,比如語法格式、狀態(tài)機(jī)的寫法、ModleSim的使用等。 在動手編寫程序之前,更重要的是讀懂題目的要求,將具體的功能實現(xiàn)轉(zhuǎn)化為狀態(tài)機(jī)。在這一步驟中,理清思路特別重要,最好可以在紙上推演一下,盡可能簡化狀態(tài)。比如AD采集程序中的核心部分的狀態(tài)機(jī),想清楚后可以簡化為3個狀態(tài),空想的話在實驗室調(diào)試了一個下午都沒有結(jié)果。所以思路清晰很重要。 總的來說,當(dāng)初初識FPGA的興奮還沒有消退。感覺單片機(jī)是編軟件,F(xiàn)PGA是編寫硬件,有完全不同的思路和風(fēng)格。《可編程邏輯設(shè)計課程設(shè)計》附件:多路生理信號采集模塊設(shè)計程序清單附件材料多路生理信號采集模塊設(shè)計程序清單鍵盤掃描模塊程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYMATRIKEYSCANISPORT( CLK :INSTD_LOGIC;--50MHZ時鐘 CLKOUT:OUTSTD_LOGIC;--1KHZOUTPUTNEXT COL :INSTD_LOGIC_VECTOR(3DOWNTO0);--LIESIGNAL ROW :OUTSTD_LOGIC_VECTOR(3DOWNTO0);--HANGSIGNAL KEYOUT :OUTSTD_LOGIC_VECTOR(3DOWNTO0);--MARKTHENUMBER PUTDOWN:OUTSTD_LOGIC);--PUTDOWN=1表示鍵盤輸出值有效ENDMATRIKEYSCAN;ARCHITECTUREBEHAVEOFMATRIKEYSCANIS SIGNALROWREG:STD_LOGIC_VECTOR(3DOWNTO0); SIGNALCOLREG,COLREG0,COLREG1,COLREG2:STD_LOGIC_VECTOR(3DOWNTO0); SIGNALCON:STD_LOGIC_VECTOR(7DOWNTO0); SIGNALCNT:INTEGERRANGE0TO50000; SIGNALCLKREG:STD_LOGIC;--1KHZ時鐘BEGINPROCESS(CLK)--50MHZCLK分頻輸出1KHZCLKREGBEGIN IFCLK'EVENTANDCLK='1'THEN IFCNT=49999THEN--49999 CNT<=0; CLKREG<='0'; ELSIFCNT=24999THEN--24,999 CNT<=CNT+1; CLKREG<='1'; ELSE CNT<=CNT+1; ENDIF; ENDIF;ENDPROCESS;CLKOUT<=CLKREG;PROCESS(CLKREG)--輸出列信號,掃描鍵盤BEGIN IFCLKREG'EVENTANDCLKREG='1'THEN CASEROWREGIS WHEN"0001"=>ROWREG<="0010"; WHEN"0010"=>ROWREG<="0100"; WHEN"0100"=>ROWREG<="1000"; WHEN"1000"=>ROWREG<="0001"; WHENOTHERS=>ROWREG<="0001"; ENDCASE; ENDIF;ENDPROCESS; ROW<=ROWREG;--列信號輸出 CON<=ROWREG&COL;PROCESS(CLKREG)--MARKTHENUMBERBEGIN IFCLKREG'EVENTANDCLKREG='1'THEN CASECONIS WHEN"10001000"=>KEYOUT<="0000";PUTDOWN<='1';--1 WHEN"01001000"=>KEYOUT<="0001";PUTDOWN<='1';--2 WHEN"00101000"=>KEYOUT<="0010";PUTDOWN<='1';--3 WHEN"00011000"=>KEYOUT<="0011";PUTDOWN<='1';--4 WHEN"10000100"=>KEYOUT<="0100";PUTDOWN<='1';--5 WHEN"01000100"=>KEYOUT<="0101";PUTDOWN<='1';--6 WHEN"00100100"=>KEYOUT<="0110";PUTDOWN<='1';--7 WHEN"00010100"=>KEYOUT<="0111";PUTDOWN<='1';--8 WHEN"10000010"=>KEYOUT<="1000";PUTDOWN<='1';--9 WHEN"01000010"=>KEYOUT<="1001";PUTDOWN<='1';--10 WHEN"00100010"=>KEYOUT<="1010";PUTDOWN<='1';--11 WHEN"00010010"=>KEYOUT<="1011";PUTDOWN<='1';--12 WHEN"10000001"=>KEYOUT<="1100";PUTDOWN<='1';--13 WHEN"01000001"=>KEYOUT<="1101";PUTDOWN<='1';--14 WHEN"00100001"=>KEYOUT<="1110";PUTDOWN<='1';--15 WHEN"00010001"=>KEYOUT<="1111";PUTDOWN<='1';--16 WHEN"00010000"=>PUTDOWN<='0'; WHEN"00100000"=>PUTDOWN<='0'; WHEN"01000000"=>PUTDOWN<='0'; WHEN"10000000"=>PUTDOWN<='0'; WHENOTHERS=>NULL; ENDCASE; ENDIF;ENDPROCESS;ENDBEHAVE;數(shù)碼管顯示模塊程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDISPLAY_LEDISPORT(CLOCK:INSTD_LOGIC;--1KHZINPUTNUMIN:INSTD_LOGIC_VECTOR(3DOWNTO0);--MARKEDNUMBERST:INSTD_LOGIC;--0OR1EN:OUTSTD_LOGIC_VECTOR(7DOWNTO0);--WEIXUAND_OUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0)--DUANXUAN);END;ARCHITECTURERTLOFDISPLAY_LEDISSIGNALCOUNTER:INTEGERRANGE0TO7;SIGNALNUMA:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(ST)BEGINIFRISING_EDGE(ST)THENNUMA(3DOWNTO0)<=NUMIN;ENDIF;ENDPROCESS; PROCESS(CLOCK) VARIABLENUM:STD_LOGIC_VECTOR(3DOWNTO0); BEGIN IFRISING_EDGE(CLOCK)THEN EN<="00000001"; IFCOUNTER>=7THEN--WEIXUANJISHU COUNTER<=0; ELSE COUNTER<=COUNTER+1; ENDIF; CASECOUNTERIS WHEN7=> NUM:=NUMA(3DOWNTO0); WHENOTHERS=> NUM:="0000"; ENDCASE; CASENUMIS--DUANXUANDISPLAY WHEN"0000"=>D_OUT<="00111111";--0 WHEN"0001"=>D_OUT<="00000110";--1 WHEN"0010"=>D_OUT<="01011011";--2 WHEN"0011"=>D_OUT<="01001111";--3 WHEN"0100"=>D_OUT<="01100110";--4 WHEN"0101"=>D_OUT<="01101101";--5 WHEN"0110"=>D_OUT<="01111101";--6 WHEN"0111"=>D_OUT<="00000111";--7 WHEN"1000"=>D_OUT<="01111111";--8 WHEN"1001"=>D_OUT<="01101111";--9 WHEN"1010"=>D_OUT<=X"77";--A WHEN"1011"=>D_OUT<=X"7C";--B WHEN"1100"=>D_OUT<=X"39";--C WHEN"1101"=>D_OUT<=X"5E";--D WHEN"1110"=>D_OUT<=X"79";--E WHEN"1111"=>D_OUT<=X"71";--F WHENOTHERS=>D_OUT<="00000000"; ENDCASE; ENDIF; ENDPROCESS; END;時鐘分頻模塊程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYCLK_DIVISPORT(CLKIN:INSTD_LOGIC;FSEL:INSTD_LOGIC_VECTOR(3DOWNTO0);CLK_OUT_1,CLK_OUT_2:OUTSTD_LOGIC);END;ARCHITECTUREBEHAVEOFCLK_DIVISSIGNALCOUNTER_1:INTEGERRANGE0TO400;SIGNALCOUNTER_2:INTEGERRANGE0TO2500;SIGNALCLK_1,CLK_2:STD_LOGIC:='0';SIGNALFNUM:INTEGERRANGE0TO20;SIGNALNUM:INTEGERRANGE0TO400;BEGINPROCESS(FSEL)BEGINFNUM<=CONV_INTEGER(FSEL);--CONVERTTOINTEGERENDPROCESS;PROCESS(FNUM)--FENPINBEISHUBEGINCASEFNUMIS WHEN0=>NUM<=1; WHEN1=>NUM<=2; WHEN2=>NUM<=4; WHEN3=>NUM<=8; WHEN4=>NUM<=16; WHEN5=>NUM<=32; WHENOTHERS=>NUM<=4;ENDCASE;ENDPROCESS; PROCESS(CLKIN) BEGIN IFRISING_EDGE(CLKIN)THEN IFCOUNTER_1>=(330/NUM-1)THEN--330 COUNTER_1<=0;CLK_1<=NOTCLK_1; ELSECOUNTER_1<=COUNTER_1+1; ENDIF; ENDIF; ENDPROCESS;CLK_OUT_1<=CLK_1;PROCESS(CLKIN)--10KDIV BEGIN IFRISING_EDGE(CLKIN)THEN IFCOUNTER_2>=2499THEN--2499 COUNTER_2<=0;CLK_2<=NOTCLK_2; ELSECOUNTER_2<=COUNTER_2+1; ENDIF; ENDIF; ENDPROCESS; CLK_OUT_2<=CLK_2;END;AD時序產(chǎn)生模塊程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYADS7822_TIME_CONTROLISPORT( CLK:INSTD_LOGIC; ADS7822_CS,ADS7822_SCLK_OUT:OUTSTD_LOGIC);END;ARCHITECTURERTLOFADS7822_TIME_CONTROLISTYPESTATESIS(IDLE,SCLK_STATE_1,SCLK_STATE_0,SCLK_STATE_3,CS_STATE_0,CS_STATE_1,CS_STATE_2);--定義各子狀態(tài)SIGNALSTATE:STATES:=IDLE;SIGNALCNT:INTEGER:=0;SIGNALCNT2:INTEGER:=0;SIGNALCS,AD_SCLK:STD_LOGIC;BEGINADS7822_CS<=CS;ADS7822_SCLK_OUT<=AD_SCLK;PROCESS(CLK)BEGINIFRISING_EDGE(CLK)THENCASESTATEISWHENIDLE=> CS<='1';AD_SCLK<='0';CNT<=0; IFCNT2>2THEN STATE<=CS_STATE_0;CNT2<=0; ELSE CNT2<=CNT2+1;STATE<=IDLE; ENDIF; WHENSCLK_STATE_1=> AD_SCLK<='1';STATE<=CS_STATE_0; WHENCS_STATE_0=> CS<='0'; IFCNT>14THEN STATE<=CS_STATE_1; ELSE STATE<=SCLK_STATE_0; ENDIF; WHENSCLK_STATE_0=> AD_SCLK<='0';CNT<=CNT+1;STATE<=SCLK_STATE_3; WHENSCLK_STATE_3=> AD_SCLK<='0';CNT<=CNT;STATE<=SCLK_STATE_1; WHENCS_STATE_1=> AD_SCLK<='0'; IFCNT2>5THEN STATE<=CS_STATE_2;CNT2<=0; ELSE CNT2<=CNT2+1;STATE<=CS_STATE_1; ENDIF; WHENCS_STATE_2=> CS<='1';STATE<=IDLE; ENDCASE; ENDIF;ENDPROCESS;ENDRTL;AD轉(zhuǎn)換模塊程序 LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYSHIFT_AD_DATAIS PORT( CLK,CLK_CAP,AD_IN,CS:INSTD_LOGIC; AD_DATA:OUTSTD_LOGIC_VECTOR(11DOWNTO0)); END; ARCHITECTUREBEHAVEOFSHIFT_AD_DATAIS SIGNALAD_SIG:STD_LOGIC_VECTOR(14DOWNTO0); SIGNALAD_DATA_S:STD_LOGIC_VECTOR(11DOWNTO0); BEGINAD_DATA<=AD_DATA_S; PROCESS(CLK,AD_IN) BEGIN IFCLK'EVENTANDCLK='1'THEN AD_SIG(14)<=AD_IN; FORIIN1TO14LOOP AD_SIG(14-I)<=AD_SIG(15-I); ENDLOOP; ENDIF; ENDPROCESS; PROCESS(CLK_CAP,CS) BEGIN IFCLK_CAP'EVENTANDCLK_CAP='1'THEN IFCS='1'THEN AD_DATA_S<=AD_SIG(14DOWNTO3); ELSE AD_DATA_S<=AD_DATA_S; ENDIF; ENDIF; ENDPROCESS; ENDBEHAVE;存儲地址控制模塊程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSELISPORT( CS,RST:INSTD_LOGIC; KEYIN:INSTD_LOGIC; ST:OUTSTD_LOGIC_VECTOR(1DOWNTO0);--CHANNELMARK EN,A,B,C:OUTSTD_LOGIC; ADDRESS:OUTSTD_LOGIC_VECTOR(9DOWNTO0); LED,WEN:OUTSTD_LOGIC );ENDENTITYSEL;ARCHITECTURERTLOFSELISSIGNALSTREG:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALADDREG:STD_LOGIC_VECTOR(9DOWNTO0);SIGNALRD,FLAG:STD_LOGIC;SIGNALSTATE:STD_LOGIC_VECTOR(1DOWNTO0);BEGINADDRESS<=ADDREG;--DATAADDRESSWEN<=FLAG;--I/OENABLEST<=STREG;--CHANNELMARKPROCESS(ADDREG,RST)BEGIN IFRST='0'THEN STATE<="00"; ELSIF((ADDREG="0000011111")AND(FLAG='1')AND(STATE="00"))THEN--(ADDREG="1111111111") STATE<="01"; ELSIF(KEYIN='0'ANDSTATE="01")THEN STATE<="10"; ENDIF;ENDPROCESS;PROCESS(CS,STATE,RST)--CASE_SWITCHBEGINIFRST='0'THEN ADDREG<="0000000000"; STREG<="00"; LED<='1'; FLAG<='1';--WENELSIFRISING_EDGE(CS)THEN CASESTATEIS WHEN"00"=> STREG<=STREG+1; FLAG<='1'; LED<='1'; ADDREG<=ADDREG+1;--INPUT WHEN"01"=> ADDREG<="0000000000"; FLAG<='0'; LED<='0';--STOPTOWAIT WHEN"10"=> ADDREG<=ADDREG+1; FLAG<='0'; LED<='1';--OUTPUT WHENOTHERS=>NULL; ENDCASE;ENDIF;ENDPROCESS;PROCESS(STREG)--CHANNALMARKAUTORETURNBEGINCASESTREGIS WHEN"00"=>EN<='0';C<='0';B<='0';A<='0'; WHEN"01"=>EN<='0';C<='0';B<='0';A<='1'; WHEN"10"=>EN<='0';C<='0';B<='1';A<='0'; WHEN"11"=>EN<='0';C<='0';B<='1';A<='1'; WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;ENDARCHITECTURERTL;數(shù)據(jù)合并模塊程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCOMBIS--MERGETHEDATASIGNAL&STATEMARKPORT( CLK:INSTD_LOGIC; DATAH:INSTD_LOGIC_VECTOR(1DOWNTO0); DATAL:INSTD_LOGIC_VECTOR(11DOWNTO0); DATACOMB:OUTSTD_LOGIC_VECTOR(15DOWNTO0); DATARAW:OUTSTD_LOGIC_VECTOR(11DOWNTO0) );ENDENTITYCOMB;ARCHITECTURERTLOFCOMBISSIGNALDATAREG:STD_LOGIC_VECTOR(15DOWNTO0);SIGNALDATAHREG:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALDATALREG:STD_LOGIC_VECTOR(11DOWNTO0);BEGINDATAHREG<=DATAH;DATALREG<=DATAL;DATARAW<=DATAL;--DIRECTLYPASSFOROBSERVATIONDATAREG<="00"&DATAHREG&DATALREG;DATACOMB<=DATAREG;ENDARCHITECTURERTL;數(shù)據(jù)分離模塊程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCONVIS--SEPARATETHESIGNALPORT( CLK:INSTD_LOGIC; DATAIN:INSTD_LOGIC_VECTOR(15DOWNTO0);--RAMOUTPUT SEL:OUTSTD_LOGIC_VECTOR(1DOWNTO0);--SIGNALMARK CH1:OUTSTD_LOGIC_VECTOR(11DOWNTO0); CH2:OUTSTD_LOGIC_VECTOR(11DOWNTO0); CH3:OUTSTD_LOGIC_VECTOR(11DOWNTO0); CH4:OUTSTD_LOGIC_VECTOR(11DOWNTO0) );ENDENTITYCONV;ARCHITECTURERTLOFCONVISSIGNALST:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALCHREG:STD_LOGIC_VECTOR(11DOWNTO0);BEGINST<=DATAIN(13DOWNTO12);SEL<=ST;CHREG<=DATAIN(11DOWNTO0);PROCESS(CLK,ST)BEGINIFRISING_EDGE(CLK)THEN CASESTIS WHEN"00"=>CH4<=CHREG; WHEN"01"=>CH1<=CHREG; WHEN"10"=>CH2<=CHREG; WHEN"11"=>CH3<=CHREG; WHENOTHERS=>NULL;ENDCASE;ENDIF;ENDPROCESS;ENDARCHITECTURERTL;《可編程邏輯設(shè)計課程設(shè)計》附件:多路生理信號采集模塊設(shè)計系統(tǒng)頂層設(shè)計圖系統(tǒng)頂層設(shè)計圖《可編程邏輯設(shè)計課程設(shè)計》附件:多路生理信號采集模塊設(shè)計原理電路圖原理電路圖《可編程邏輯設(shè)計課程設(shè)計》附件:多路生理信號采集模塊設(shè)計RTL視圖RTL視圖鍵盤掃描模塊RTL時鐘分頻模塊RTL存儲地址控制模塊RTL數(shù)據(jù)合并模塊RTL數(shù)據(jù)分離模塊RTL《可編程邏輯設(shè)計課程設(shè)計》附件:異步串行接口電路及數(shù)據(jù)傳輸模塊設(shè)計程序清單
異步串行接口電路及數(shù)據(jù)傳輸模塊設(shè)計UART模塊LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYUARTISPORT(CLK:INSTD_LOGIC;--系統(tǒng)時鐘50MHZRST:INSTD_LOGIC;--系統(tǒng)復(fù)位RXD:INSTD_LOGIC;--串行數(shù)據(jù)接收端 ROMIN:INSTD_LOGIC_VECTOR(7DOWNTO0);--中間傳送的并行數(shù)據(jù)TXD:OUTSTD_LOGIC;--串行數(shù)據(jù)發(fā)送端EN:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--數(shù)碼管使能SEG_DATA:OUTSTD_LOGIC_VECTOR(7DOWNTO0);--數(shù)碼管7段碼 ROMADD:OUTSTD_LOGIC_VECTOR(7DOWNTO0);KEY_INPUT:INSTD_LOGIC);--按鍵輸入ENDUART;ARCHITECTUREARCHOFUARTIS--//////////////////INNERREG////////////////////SIGNALDIV_REG:STD_LOGIC_VECTOR(15DOWNTO0);--分頻計數(shù)器,分頻值由波特率決定。分頻后得到頻率為16倍波特率的時鐘SIGNALDIV16_TRAS_REG:STD_LOGIC_VECTOR(3DOWNTO0);--該寄存器的計數(shù)值對應(yīng)發(fā)送時當(dāng)前位于的時隙數(shù)SIGNALDIV16_REC_REG:STD_LOGIC_VECTOR(3DOWNTO0);--寄存器的計數(shù)值對應(yīng)接收時當(dāng)前位于的時隙數(shù)SIGNALSTATE_TRAS:STD_LOGIC_VECTOR(3DOWNTO0);--發(fā)送狀態(tài)寄存器SIGNALSTATE_REC:STD_LOGIC_VECTOR(3DOWNTO0);--接受狀態(tài)寄存器SIGNALCLKBAUD_TRAS:STD_LOGIC;--以波特率為頻率的發(fā)送使能信號SIGNALCLKBAUD_REC:STD_LOGIC;--以波特率為頻率的接受使能信號SIGNALCLKBAUD16X:STD_LOGIC;--以16倍波特率為頻率的時鐘,它的作用是將發(fā)送或接受一個BIT的時鐘周期分為16個時隙SIGNALRECSTART:STD_LOGIC;--開始發(fā)送標(biāo)志SIGNALRECSTART_TMP:STD_LOGIC;--開始接受標(biāo)志SIGNALTRASSTART:STD_LOGIC;--發(fā)送開始標(biāo)志(開始發(fā)送一幀)SIGNALRXD_REG1:STD_LOGIC;--接收寄存器1SIGNALTXD_REG:STD_LOGIC;--發(fā)送寄存器SIGNALRXD_BUF:STD_LOGIC_VECTOR(7DOWNTO0);--接收數(shù)據(jù)緩存SIGNALTXD_BUF:STD_LOGIC_VECTOR(7DOWNTO0);--發(fā)送數(shù)據(jù)緩存SIGNALSEND_STATE:STD_LOGIC;--發(fā)送狀態(tài)寄存器SIGNALCNT_DELAY:STD_LOGIC_VECTOR(19DOWNTO0);--延時去抖計數(shù)器SIGNALSTART_DELAYCNT:STD_LOGIC;--開始延時計數(shù)標(biāo)志SIGNALKEY_ENTRY1:STD_LOGIC;--確定有鍵按下標(biāo)志SIGNALKEY_ENTRY2:STD_LOGIC;--確定有鍵按下標(biāo)志SIGNALKEY_UP:STD_LOGIC;SIGNALADDREG:STD_LOGIC_VECTOR(7DOWNTO0);--ROM存儲地址SIGNALRXREG:STD_LOGIC_VECTOR(3DOWNTO0);CONSTANTDIV_PAR:STD_LOGIC_VECTOR(15DOWNTO0):="0000000010100011";--325--分頻參數(shù),其值由對應(yīng)的波特率計算而得,按此參數(shù)分頻的時鐘頻率是波特率的16倍,此處值對應(yīng)9600的波特率,即分頻出的時鐘頻率是9600*16 SIGNALTXD_XHDL3:STD_LOGIC;BEGINEN<="0001";--7段數(shù)碼管使能信號賦值TXD<=TXD_XHDL3;TXD_XHDL3<=TXD_REG; ROMADD<=ADDREG;PROCESS(CLK,RST)--延時去抖16MSBEGINIF(NOTRST='1')THENCNT_DELAY<="00000000000000000000";--延時去抖計數(shù)器START_DELAYCNT<='0';--開始延時計數(shù)標(biāo)志 KEY_UP<='1';ELSIF(CLK'EVENTANDCLK='1')THENIF(START_DELAYCNT='1')THENIF(CNT_DELAY/="11000011010100000000")THEN--800000CNT_DELAY<=CNT_DELAY+"00000000000000000001";ELSECNT_DELAY<="00000000000000000000";START_DELAYCNT<='0';ENDIF;ELSE--IF((NOTKEY_INPUT='1')AND(CNT_DELAY="00000000000000000000"))THEN--按鍵按下開始計時IF((KEY_UP='1')AND(NOTKEY_INPUT='1'))THEN KEY_UP<='0'; ELSIF((KEY_UP='0')AND(KEY_INPUT='1'))THEN START_DELAYCNT<='1'; KEY_UP<='1';ENDIF;ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK,RST)--按鍵BEGINIF(NOTRST='1')THENKEY_ENTRY1<='0';ELSIF(CLK'EVENTANDCLK='1')THENIF(KEY_ENTRY2='1')THENKEY_ENTRY1<='0';ELSEIF(CNT_DELAY="11000011010100000000")THEN--IF(NOTKEY_INPUT='1')THEN--判斷按鍵確實按下 IF(KEY_INPUT='1')THEN--判斷按鍵確實彈起KEY_ENTRY1<='1';ENDIF;ENDIF;ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK,RST)--計數(shù)值162則DIV_REG清零BEGINIF(NOTRST='1')THENDIV_REG<="0000000000000000";ELSIF(CLK'EVENTANDCLK='1')THENIF(DIV_REG=DIV_PAR-"0000000000000001")THENDIV_REG<="0000000000000000";ELSEDIV_REG<=DIV_REG+"0000000000000001";ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK,RST)--分頻得到16倍波特率的時鐘=50M/(163*2)BEGINIF(NOTRST='1')THENCLKBAUD16X<='0';ELSIF(CLK'EVENTANDCLK='1')THENIF(DIV_REG=DIV_PAR-"0000000000000001")THENCLKBAUD16X<=NOTCLKBAUD16X;--DIV_REG計數(shù)值162則反轉(zhuǎn)ENDIF;ENDIF;ENDPROCESS;PROCESS(CLKBAUD16X,RST,RECSTART)--判斷接收條件,產(chǎn)生接收16位的頻率BEGINIF(NOTRST='1')THENDIV16_REC_REG<="0000";ELSEIF(CLKBAUD16X'EVENTANDCLKBAUD16X='1')THENIF(RECSTART='1')THEN--接收開始標(biāo)志DIV16_REC_REG<=DIV16_REC_REG+"0001";--接收開始后,時隙數(shù)在16倍波特率的時鐘下加1循環(huán)ENDIF; ENDIF;ENDIF;ENDPROCESS;PROCESS(CLKBAUD16X,RST)--判斷發(fā)送條件BEGINIF(NOTRST='1')THENDIV16_TRAS_REG<="0000";K,ELSEIF(CLKBAUD16X'EVENTANDCLKBAUD16X='1')THENIF(TRASSTART='1')THENDIV16_TRAS_REG<=DIV16_TRAS_REG+"0001";--發(fā)送開始后,時隙數(shù)在16倍波特率的時鐘下加1循環(huán)ENDIF; ENDIF;ENDIF;ENDPROCESS;PROCESS(DIV16_REC_REG)--接收使能BEGINIF(DIV16_REC_REG="1111")THENCLKBAUD_REC<='1';在第16個時隙,接收使能信號有效,將數(shù)據(jù)打入ELSECLKBAUD_REC<='0';ENDIF;ENDPROCESS;PROCESS(DIV16_TRAS_REG)--發(fā)送使能BEGINIF(DIV16_TRAS_REG="1111")THENCLKBAUD_TRAS<='1';--在第16個時隙,發(fā)送使能信號有效,將數(shù)據(jù)發(fā)出ELSECLKBAUD_TRAS<='0';ENDIF;ENDPROCESS;PROCESS(CLKBAUD16X,RST)--發(fā)送BEGINIF(NOTRST='1')THENTXD_REG<='1';--發(fā)送寄存器TRASSTART<='0';--開始發(fā)送標(biāo)志TXD_BUF<="00000000";--發(fā)送數(shù)據(jù)緩存STATE_TRAS<="0000";--發(fā)送狀態(tài)寄存器SEND_STATE<='1';--發(fā)送狀態(tài)寄存器KEY_ENTRY2<='0';--確定有鍵按下標(biāo)志 ADDREG<="00000000"; ELSEIF(CLKBAUD16X'EVENTANDCLKBAUD16X='1')THENIF(NOTKEY_ENTRY2='1')THEN--KEY_ENTRY2=1開始發(fā)送IF(KEY_ENTRY1='1')THENKEY_ENTRY2<='1';--TXD_BUF<="00110010";--"2" TXD_BUF<=ROMIN;ADDREG<=ADDREG+1;ENDIF;ELSECASESTATE_TRASISWHEN"0000"=>--發(fā)送啟動位IF((NOTTRASSTART='1')AND(SEND_STATE='1'))THENTRASSTART<='1';--開始發(fā)送狀態(tài)ELSEIF(SEND_STATE='1')THENIF(CLKBAUD_TRAS='1')THEN--以波特率為頻率的發(fā)送使能信號TXD_REG<='0';--起始位STATE_TRAS<=STATE_TRAS+"0001";ENDIF;ELSEKEY_ENTRY2<='0';STATE_TRAS<="0000"; SEND_STATE<='1'; ENDIF;ENDIF;WHEN"0001"=>--發(fā)送第1位IF(CLKBAUD_TRAS='1')THENTXD_REG<=TXD_BUF(0);TXD_BUF(6DOWNTO0)<=TXD_BUF(7DOWNTO1);STATE_TRAS<=STATE_TRAS+"0001";ENDIF;WHEN"0010"=>--發(fā)送第2位IF(CLKBAUD_TRAS='1')THENTXD_REG<=TXD_BUF(0);TXD_BUF(6DOWNTO0)<=TXD_BUF(7DOWNTO1);STATE_TRAS<=STATE_TRAS+"0001";ENDIF;WHEN"0011"=>--發(fā)送第3位IF(CLKBAUD_TRAS='1')THENTXD_REG<=TXD_BUF(0);TXD_BUF(6DOWNTO0)<=TXD_BUF(7DOWNTO1);STATE_TRAS<=STATE_TRAS+"0001";ENDIF;WHEN"0100"=>--發(fā)送第4位IF(CLKBAUD_TRAS='1')THENTXD_REG<=TXD_BUF(0);TXD_BUF(6DOWNTO0)<=TXD_BUF(7DOWNTO1);STATE_TRAS<=STATE_TRAS+"0001";
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CAPMA 3-2017生貉皮質(zhì)量檢驗
- 嘉實基金java面試題及答案
- 公司集群面試題及答案
- 概論1考試題及答案
- 工作類面試題及答案
- 廣東中考試題及答案
- 動漫分析面試題及答案
- 人的智能與人工智能課件
- 勞動合同到期解除協(xié)議書
- 宵夜廚房承包合同范本
- 軟裝搭配與色彩運用考核試卷
- 2025年中國冶金錳礦石市場調(diào)查研究報告
- 合伙經(jīng)營吊車協(xié)議書
- 地方政府治理中的典型案例試題及答案
- 民辦非企業(yè)會計制度
- 2023光伏發(fā)電站快速頻率響應(yīng)檢測規(guī)程
- 廣東省廣州市2025屆高三下學(xué)期考前沖刺訓(xùn)練(二)英語試卷(含答案)
- 我國戰(zhàn)略性金屬和關(guān)鍵礦產(chǎn)發(fā)展白皮書-2025-05-宏觀大勢
- 2025年入團(tuán)考試開放機(jī)會與試題與答案
- 電梯安全管理員培訓(xùn)
- 民辦學(xué)校新學(xué)期課程設(shè)置計劃
評論
0/150
提交評論