《FPGA全程進階---實戰演練》第五章 基於74HC595的LED操作

来源:http://www.cnblogs.com/raymon-tec/archive/2016/07/01/5634266.html
-Advertisement-
Play Games

1基礎理論部分 分頻,是的,這個概念也很重要。分頻是指將一單一頻率信號的頻率降低為原來的1/N,就叫N分頻。實現分頻的電路或裝置稱為“分頻器”,如把33MHZ的信號2分頻得到16.5MHZ的信號,3分頻得到11MHZ的信號,10分頻得到3.3MHZ的信號。 分頻主要是相對於主晶振來說,用不到那麼高的 ...


1基礎理論部分

1.1分頻

  分頻,是的,這個概念也很重要。分頻是指將一單一頻率信號的頻率降低為原來的1/N,就叫N分頻。實現分頻的電路或裝置稱為“分頻器”,如把33MHZ的信號2分頻得到16.5MHZ的信號,3分頻得到11MHZ的信號,10分頻得到3.3MHZ的信號。

  分頻主要是相對於主晶振來說,用不到那麼高的頻率,開發板一般根據具體需要會加入晶振,一般若是功耗較高可選用50MHz,其他情況可以相對調整,如24MHz等等。那麼分頻的典型應用,二分頻,四分頻,八分頻,還有任意分頻。

  對於分頻,我們可以利用quartus ii 自帶的PLL進行分頻,這樣會占用一定的資源,也可以利用計數器實現一定的分頻,註意,FPGA中不同於其他的CPU,沒有計時器的概念,只有計數器。

1.2 LED

  LED(light emitting diode),發光二極體,簡稱LED,是一種能夠將電能轉化成可見光的固態的半導體器件,可以直接把電轉換成光。可以用在電路及儀器中作指示燈,或者組成文字或數字顯示等。有不同化合物製成的二極體如砷,鎵,磷等化合物製成,不同的化合物組合會顯示不同顏色的光。

  在設計LED的驅動電路時,不能直接接到3.3V或者5V來點亮,LED有額定電流,超過這個額定電流,LED就會燒掉,反接也會燒掉。一般的LED的額定電流從10mA~1A不等。FPGA開發採用的LED主要是貼片0805或者0603等,額定電路一般從10mA~30mA.

1.3 74HC595

  開發板上面的LED控制是用串入並出/串出的移位寄存器74HC595晶元,晶元在電路中的接入情況如圖5.1所示,實物圖如圖5.2所示。其中MR引腳直接接高電平,不進行複位。串出引腳9不接,不進行串出引腳的使用。輸出使能引腳13直接接地,手冊上建議。11和12引腳分別為移位寄存器時鐘輸入和存儲時鐘輸入,分別引出。

wps769.tmp

圖5.1 LED部分電路圖

wps9EB.tmp

圖5.2 實物圖

2 verilog代碼實現部分

2.1 74HC595 控制部分

wps9FB.tmp

  14行定義了一個全局參數WIDTH = 8,用來控製程序下麵所有的有關於數量的使用。

wpsA0C.tmp

  59行和60行分別定義了時鐘信號和時鐘使能信號,其中時鐘信號sclk時鐘周期前半段為低電平,後半段為高電平,可以實現對數據的中間採樣,時鐘使能信號led_time可以控制數據和時鐘對齊。48行的state是一個狀態改變的寄存器,只要數據一更新,state就有效。

wpsA1C.tmp

  75行定義了update_input信號用來檢測輸入數據的變化。

wpsA2D.tmp

  狀態轉換部分,在case語句中先檢測state的初始位,然後進入迴圈操作,檢測update_input是否使能,使能更新state,不使能保持state,更新後開始輸出位數計數器led_cnt的計數

wpsA4D.tmp

  在121到123行,對輸出的三路信號進行了約束限制,這種方法值的借鑒,在用不到時不輸出信號,用到時輸出信號,最大量的節省時鐘。Led_data_out是先從高位輸出到低位。

2.2 LED數據產生部分

wpsB68.tmp

  在模塊聲明處,仍舊使用全局定義變數,控制模塊中常量的使用。

wpsB78.tmp

  計數模塊,產生時鐘使能信號。

wpsBB8.tmp

  Reg型變數Led_out_cnt是用來控制LED變化, 每當時鐘信號使能開始計數,板卡上面一共有8個LED,所以計數8個即可。

wpsBC8.tmp

  LED解碼部分,通過上面的led_out_cnt信號進行解碼,控制LED的流水操作。

3 modelsim驗證部分

3.1 led_generate 模塊模擬

wpsBD9.tmp

  43行產生時鐘信號,通過PERIOD進行周期控制。49~51產生複位信號,當時鐘兩次下降沿後複位信號拉高。56行用來監測led_out輸出的時間,生成的腳本文件如圖5.3所示。

wpsBEA.tmp

圖5.3模擬波形

  圖5.4是利用腳本文件生成,可以觀察到實現了流水功能,且時間間隔1s;

wpsC0A.tmp

圖5.4 腳本生成文件

3.2 led_74HC595 模塊模擬

wpsC0B.tmp

  前半部分和上述都一樣,可以作為固定部分,大家可以自行複製即可。59行到63行增加了系統輸入信號初始化部分。在輸入信號輸入前,最好最安全就是進行一次初始化。

wpsC1B.tmp

  75行到87行是對輸入進行模擬輸入,並監測led_data-out信號,輸出的結果如圖5.5所示,由圖可以看到時間間隔為120ns。

  圖5.6是模擬波形,可以看到時鐘led_sclk每次採樣在輸入信號的正中間位置,最大程度保證採樣可靠。

wpsC4B.tmp

圖5.5 腳本文件

wpsC4C.tmp

圖5.6 模擬波形


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 從c++轉到java,初學struts,竟然碰到一個因寫錯單詞而造成的錯誤,structs --> struts ...
  • 這是個對於讀寫鎖中級剖析文章, 會自己實現讀寫鎖的細節.歡迎用到自己的項目中. ...
  • 在 HttpRequest 對象中,屬性 GET 和 POST 得到的都是 django.http.QueryDict 所創建的實例。這是一個 django 自定義的類似字典的類,用來處理同一個鍵帶多個值的情況。 在 python 原始的字典中,當一個鍵出現多個值的時候會發生衝突,只保留最後一個值。 ...
  • 一、過濾器 過濾器就是向web應用程式的請求和和響應添加功能的組件。過濾器能夠實現客戶端和目標資源之間的交互信息進行篩選和過濾,最終保留有效的數據信息。 二、過濾器的生命周期 2.1 實例化。 web容器複製創建過濾器的實例來完成過濾器的實例化,只會實例化一次。 2.2 初始化。 在進行過濾工作前會 ...
  • 一、servlet的概念 Servlet是一種獨立與平臺和協議的伺服器端java應用程式,通過Servlet可以生成動態web頁面,同時使用Servlet還可以在伺服器端對客戶的請求進行處理,控製程序的執行。 Servlet的主要作用就是互動式的瀏覽和更新數據,並生成動態的頁面內容展示。 1. 服務 ...
  • 題目:輸入兩個鏈表,找出它們的第一個公共節點。鏈表的定義如下: 思路1:採用蠻力的方法:在第一個鏈表上順序遍歷每個節點,每遍歷到一個節點的時候,在第二個鏈表上順序遍歷每個節點。如果第二個鏈表上的節點和第一個鏈表上的節點一樣,就說明兩個鏈表在節點上重合,於是就找到了公共的節點。而通常蠻力並不是好的方法 ...
  • HTTP 應用的信息是通過 請求報文 和 響應報文 傳遞的,關於更多的相關知識,可以閱讀《HTTP權威指南》獲得。 其中 請求報文 由客戶端發送,其中包含和許多的信息,而 django 將這些信息封裝成了 HttpRequest 對象,該對象由 HttpRequest 類創建。每一個請求都會生成一個 ...
  • 這周還是在改自己的這個框架,被多線程折騰了兩天,最終無奈放棄在游戲啟動時調用引擎進行圖片相關資源的初始化,當然進展還是不錯的。 嗯,下麵還是以流水的方式繼續記錄一下本周完成的工作: 1、調通了客戶端與lua的相互調用,用的是verysimple這個第三方庫(跨平臺的庫)。這邊遇到一個坑,特此記錄。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...