freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

畢業(yè)論文:基于vhdl的uart設計-資料下載頁

2024-11-16 18:34本頁面

【導讀】UART是設備和設備間進行通信的關鍵,當一個設備需要和另一個連接的設備進行通信時,通常采用數字信號,這種源自并行的信號必須轉換成串行信號才能通過有線或無線傳輸到另一臺設備。在接收端,串行信號又轉換成并行信號進行處理,UART處理這種數據總線和串行口之間的串-并和并-串轉換。本文所要實現的就是就是這種串-并和并-串的轉換,使之能夠進行數據的傳輸。本文介紹了用FPGA技術實現UART電路的一種方法,用VHDL進行編程,在Modelsim下進行編譯及仿真等。EDA技術是以計算機和微電子技術為先導,匯集了計算機圖形學、拓撲、邏輯學、微電子工藝與結構學和計算數學等多種計算機應用學科最新成果的先進技術。EDA技術以計算機為工具,代替人完成數字系統(tǒng)的邏輯綜合、布局布線和設計仿真等工作。根據電子設計技術的發(fā)展特征,EDA技術發(fā)展大致分為三個階段:

  

【正文】 port ( clk : in std_logic。 reset_n : in std_logic。 din : in std_logic。 regs : out std_logic_vector(TOTAL_BIT1 downto 0)。 dout : out std_logic )。end shift_register。以上代碼中的TOTAL_BIT表示的就是寄存器序列的長度,默認為10,對應的傳輸設置是8為數據位、奇偶校驗位、1位停止位。移位寄存器結構體實現如附錄。表43 移位寄存器得端口定義名稱類型寬度說明clk輸入1時間信號Reset_n輸入1復位信號din輸入1輸入信號regs輸出TOTAL_BIT內部寄存器輸出dout輸出1輸出信號 奇偶校驗器根據奇偶校驗的設置和輸入數據計算出奇偶校驗位,所以在定義其實體時需要添加兩個類屬參數entity parity_verifier is 類屬參數 generic ( DATA_LENGTH : integer := 8。 PARITY_RULE : PARITY := NONE )。 端口 port ( source : in std_logic_vector(DATA_LENGTH1 downto 0)。 parity : out std_logic )。end parity_verifier。其中,PARITY在UART_PACKAGE庫中定義,代碼如下: 奇偶校驗規(guī)則定義type PARITY is(NONE, 無奇偶校驗ODD, 奇校驗EVEN 偶校驗)。奇偶校驗的端口定義如表44所示表44 奇偶校驗端口定義表名稱類型寬度說明source輸入DATA_LENGTH輸入的代校驗數據parity輸出1奇偶校驗器結構體的實現代碼如下:architecture parity_verifier of parity_verifier isbegin 按照校驗規(guī)則計算校驗位 with PARITY_RULE select parity = MultiXOR(source) when ODD, 奇校驗 ( not MultiXOR(source) ) when EVEN, 偶校驗 39。139。 when others。 end parity_verifier。上述及偶校驗器實現代碼中的MultiXOR函數也是在UART_PACKAGE庫中定的,其功能是對輸入序列進行異或操作。MultiXOR函數的聲明如下:function MultiXOR( din : in std_logic_vector ) return std_logic。MultiXOR函數實現代碼如下:function MultiXOR( din : in std_logic_vector ) return std_logic is variable check : std_logic。begin check := din(din39。LOW)。 for i in 1 to (din39。HIGH) loop check := check xor din(i)。 end loop。 return check。end MultiXOR。 總線選擇模塊的實現 總線選擇模塊的共識通過一個選擇信號控制兩個輸入信號,將其輸出,也就是一個二選一的選擇器。,當選擇信號sel為低時,將會把輸入總線一din1輸出,否則再選擇信號sel為高時,將會把輸入總線二din2 輸出。 總線選擇器框圖為了能使總線選擇器適應不同寬度的總線,在聲明其實體的時候可以添加一個BUS_WIDTH的類屬參數,這表示總線的寬度,代碼如下:entity switch_bus is 類屬參數 generic ( BUS_WIDTH : integer := 8 )。 總線寬度 port ( din1 : in std_logic_vector(BUS_WIDTH1 downto 0)。 輸入總線一 din2 : in std_logic_vector(BUS_WIDTH1 downto 0)。 輸入總線二 sel : in std_logic。 選擇信號 dout : out std_logic_vector(BUS_WIDTH1 downto 0) )。輸出總線end switch_bus。 總線選擇器結構體的實現代碼如附錄。 總線控制器的端口定義如表45所示表45 總線控制器的端口定義名稱類型寬度說明Din1輸入BUS_WIDTH輸入總線Din2輸入BUS_WIDTH輸入總線Sel輸入1選擇信號Dout輸出BUS_WIDTH輸出總線 計數器模塊的實現計數器模塊的功能是可控制地在輸入時鐘驅動下進行計數,當到達計數上闕時給UART內核一個提示信號。在不同的工作狀態(tài)下。計數器模塊的輸入時鐘是不同的。UART在數據發(fā)送之前需要進行數據加載(即將串行序列保存到移位寄存器內),在此過程中計數器模塊的輸入時鐘就是系統(tǒng)時鐘,因為此時的移位寄存器也是工作在系統(tǒng)時鐘下的。除了數據加載,另外兩個需要計數器兩個計數器模塊的過程是數據的接收和數據發(fā)送,由于這兩個過程中移位寄存器是工作在波特率時鐘下的,所以計數器模塊的時鐘就是和波特率時鐘同步的波特率發(fā)生器提示信號indicator,這樣每輸出一個完整的波特率時鐘周期計數器就能增加一。計數器計數的上闕是在實體聲明中定義的,代碼如下。代碼中的MAX_COUNT類屬參數就是計數上闕。entity counter is generic ( MAX_COUNT : integer := 10 )。 port ( clk : in std_logic。 reset_n : in std_logic。 ce : in std_logic。 overflow : out std_logic )。end counter。 計數器模塊結構體實現代碼如附錄。計數器得端口定義如表46所示。表46 計數器端口定義表名稱類型寬度說明Clk輸入1時鐘信號Reset_n輸入1復位信號Ce輸入1使能信號overflow輸出1計數器到達上闕的提示信號 UART內核模塊的實現 UART內核模塊是整個設計的核心,所以它也是整個設計中最復雜的模塊。由于UART內核模塊的整體結構比較復雜,下面的內容將從模塊的接口、狀態(tài)機設計和實現代碼3方面介紹UART內核的實現方法。 UART內核模塊的接口(1) CPUUART內核模塊提供的CPU接口就是UART模塊的CPU接口。 這些端口又可以分為兩組:第一組是與發(fā)送信號相關的,包括send,send_bus和send_over,其中send是發(fā)送控制信號,send_bus時待發(fā)送的總線,send_over是發(fā)送完成的提示信號;第二組是與接收相關的,包括recv,recv_bus和error,其中recv表示有新的數據被接收,recv_bus時接收數據的總線,error信號表示數據接收產生錯誤。CPU接口的端口定義如表所示。表47 CPU接口的端口定義名稱類型寬度說明Send輸入1發(fā)送控制信號Send_bus輸入DATA_BIT發(fā)送數據總線Send_over輸出1發(fā)送完成信號Recv輸出1新數據接收信號Recv_bus輸出DATA_BIT接收數據總線error輸出1接收錯誤信號 UART內核模塊其中,DATA_BIT是UART內核模塊實體聲明中定義的類屬參數,表示數據位的長度。(2)奇偶校驗器UART內核模塊通過總線選擇模塊和奇偶校驗模塊實現奇偶校驗。 奇偶校驗相關模塊連接示意圖 總線選擇器的兩個輸入端分別接到數據發(fā)送總線send_bus和數據接收總線recv_bus上,它的輸出連接到奇偶校驗器的輸入端,最后奇偶校驗器的校驗結果輸出連接到UART的一個端口parity上。這樣的連接方式有一個好處,就是在發(fā)送和接收的不同過程中,只要通過一個總線選擇信號sel_pv就能夠選擇不同的奇偶校驗內容,sel_pv信號是由UART內核的一個端口連接到總線選擇器的選擇信號端上。 由上述內容可知,UART使用的端口除了已經介紹的數據發(fā)送總線和數據接收總線外,就是總線選擇信號sel_pv和奇偶校驗信號parity了。它們的定義如表48所示。 表48 奇偶校驗端口定義表名稱類型寬度說明sel_pv輸出1總線選擇信號,選擇奇偶校驗的輸入信號parity輸入1奇偶校驗結果 (3)計數器模塊 計數器模塊的功能是在輸入時鐘的驅動下進行計數,當到達計數上闕時給UART內核一個提示信號。 UART內核模塊和計數器模塊連接示意圖 在數據接收、數據加載和數據發(fā)送過程中,都需要使用到計數器,并且不同的過程中提供給計數器的時鐘信號是不一樣的。要選擇計數器時鐘信號,可以通過一個二選一選擇器實現。二選一選擇器的兩個輸入端分別連接到波特率發(fā)生器的indicator 提示信號和系統(tǒng)時鐘信號,同時其信號選擇端口連接UART內核的一個sel_clk端口,這樣便可以通過控制信號sel_clk端口實現對計數器模塊時鐘信號的控制。另一方面,要正確的使用計數器需要對其進行復位和使能,所以UART內核還提供了兩個端口reset_parts和ce_parts,作為子模塊復位信號和使能信號的端口。以上介紹的4個端口定義如表49所示。表49 奇偶校驗端口定義表名稱類型寬度說明sel_clk輸出1計數器時鐘選擇信號reset_parts輸出1子模塊復位信號ce_parts輸出1子模塊使能信號overflow輸入1計數器計數到闕值的提示信號(4)移位寄存器UART內核和移位寄存器之間的接口主要可以分為3個作用:第一,UART內核需要控制數據加載過程,所以具有向移位寄存器發(fā)送串行數據的接口;第二,已接收的數據時保存在移位寄存器內部的,所以移位寄存器具有提供內部寄存器數據的接口;第三,在不同的工作流程中,移位寄存器的工作時鐘也不同,可能是波特率時鐘,也可能是系統(tǒng)時鐘,所以UART內核還需要有控制移位寄存器輸入時鐘的信號接口。 是UART內核和移位寄存器之間的連接示意圖。 UART內核與波特率發(fā)生器連接示意圖UART內核對數據加載過程的控制是通過send_si信號、sel_si信號和二選一選擇器實現的。圖21二選一選擇器的作用即是串行數據選擇,它的輸入端分別接到UART內核的串行數據發(fā)送端口send_si和RS232的數據接收端口RxD,信號選擇端口則和UART內核的sel_si端口相連,輸出端口連接到移位寄存器的數據輸入端。這樣,在進行數據加時,UART內核可以通過sel_si信號控制UART內核的串行數據輸入端口作為移位寄存器的輸入;當進行數據接收時,UART內核又可以通過RS232的接收端口RxD選擇為移位寄存器的輸入。UART內核對移位寄存器式輸入時鐘的控制方式和對計數器的控制方一樣,也是利用了一個二選一選擇器,再通過選擇信號控制。,它的兩個輸入信號分別是波特率時鐘bd_clk和系統(tǒng)時鐘,選擇信號連接到UART內核的一個端口sel_clk上,輸出和移位寄存器的輸入時鐘端口相連。移位寄存器內部寄存器的數據是通過一個regs端口發(fā)送給UART內核的,regs端口多位信號,其寬度就是RS232串行通信的總位數(起始位,數據位,奇偶寄存器和停止位)。表410所示為UART內核和移位寄存器之間的端口。表410 UART內核和移位寄存器之間的端口定義表名稱類型寬度說明Send_si輸出1數據加載時所加載數據的串行信號,由UART內核產生,和系統(tǒng)時鐘同步Sel_se輸出1移位寄存器輸入數據選擇信號regs輸入TOTAL_BIT移位寄存器數據Sel_clk輸出1移位寄存器時鐘選擇信號除了表410所列的端口,UART內核的reset_parts端口還和移位寄存器的撫慰端口相連,作為它的復位信號。(5) 波特率發(fā)生器UART內核和波特率發(fā)生器之間的接口比較簡單,只有復位和使能兩個信號, 和 ce_parts信號。 UART 內核與波特率發(fā)生器連接示意圖波特率發(fā)生器的復位、使能信號與計數器的相同,其端口定義如表411所示。表411: UART內核和波特率發(fā)生器端口定義如下表名稱類型寬度說明Clk輸入1時鐘信號Reset_parts輸入1復位信號Ce_parts輸入1使能信號Bd_out輸出1波特率時鐘輸出信號indicator輸出1指示信號,在每輸出一個周期的波特率時鐘,在信號上述出一個小脈沖(6) 信號監(jiān)測模塊UART內核不但需要接收信號監(jiān)測器的指示信號,同時還需要完
點擊復制文檔內容
試題試卷相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1