當(dāng)前位置:首頁 > 工業(yè)控制 > 電路設(shè)計(jì)項(xiàng)目集錦
[導(dǎo)讀]多年來,在超過100個(gè)Hackster項(xiàng)目中,我們研究了一些非常深入和復(fù)雜的解決方案,從機(jī)器人到視覺處理,創(chuàng)建自己的硬件,當(dāng)然還有涵蓋數(shù)學(xué)等概念的項(xiàng)目,以及fpga中的濾波。

多年來,在超過100個(gè)Hackster項(xiàng)目中,我們研究了一些非常深入和復(fù)雜的解決方案,從機(jī)器人到視覺處理,創(chuàng)建自己的硬件,當(dāng)然還有涵蓋數(shù)學(xué)等概念的項(xiàng)目,以及fpga中的濾波。

在這個(gè)項(xiàng)目中,我想回顧一下基礎(chǔ)知識(shí),看看我們?nèi)绾闻c不同類型的開關(guān)、按鈕、led和顯示器進(jìn)行交互,這樣我們就可以了解更多,當(dāng)我們?cè)谄渌麘?yīng)用中使用它們時(shí),我們可以最好地解決它們。

所以在這個(gè)項(xiàng)目中,我們將使用Basys 3開發(fā)板以及一些Pmods來提供額外的接口。

對(duì)于這個(gè)項(xiàng)目,我們將使用

?Pmod ENC -正交編碼器

?按鈕

?發(fā)光二極管

我們的目標(biāo)是教授以下內(nèi)容

?如何消除一個(gè)開關(guān)的彈跳

?如何閱讀正交編碼器

?如何驅(qū)動(dòng)led有不同的強(qiáng)度使用脈寬調(diào)制

讓我們開始吧,當(dāng)然,這些技術(shù)和代碼將能夠在任何具有類似開關(guān),顯示器和led的FPGA板上使用。

消除彈跳

Basys 3有兩種開關(guān),一個(gè)按鈕和滑塊,當(dāng)開關(guān)被翻轉(zhuǎn)、滑動(dòng)或按下時(shí),我們正在斷開或建立電氣連接。開關(guān)不做一個(gè)干凈的即時(shí)連接,而是在穩(wěn)定之前,他們先斷斷續(xù)續(xù)地接觸。這種斷斷續(xù)續(xù)的初始接觸導(dǎo)致被稱為開關(guān)彈跳。

開關(guān)彈跳如下圖所示,在開關(guān)打開或斷開之后有許多過渡。反彈可能是全振幅或部分振幅反彈。

當(dāng)我們想要在應(yīng)用程序中對(duì)開關(guān)進(jìn)行采樣時(shí),我們需要考慮可能發(fā)生的任何開關(guān)反彈。如果不這樣做,就意味著我們可能會(huì)多次注冊(cè)操作,這將是困難的。

在真實(shí)的硬件世界中,開關(guān)反彈可能如下所示,這是Basys 3上的一個(gè)按鈕開關(guān)的示波器捕獲。

通常一個(gè)開關(guān)可能會(huì)反彈幾毫秒,所以我們需要在FPGA中考慮到這一點(diǎn)。

值得慶幸的是,在使用fpga中的開關(guān)時(shí),我們可以使用幾種技術(shù)來消除它們的反彈。所有這些都包括使用同步設(shè)計(jì),因此我們需要做的第一件事是將開關(guān)輸入同步到正確的時(shí)鐘域。

如果你不熟悉為什么我們需要同步到時(shí)鐘域。這是因?yàn)樗屑拇嫫鞫加幸粋€(gè)設(shè)置和保持時(shí)鐘邊緣的時(shí)間,它更新寄存器。

如果輸入在此窗口內(nèi)發(fā)生變化,則寄存器的輸出將變?yōu)閬喎€(wěn)態(tài)。這意味著在1和0之間的狀態(tài),它會(huì)隨機(jī)恢復(fù)到1或0但它與輸入電平?jīng)]有關(guān)系。

因此,我們至少使用一個(gè)兩級(jí)寄存器來同步進(jìn)入FPGA的信號(hào),該信號(hào)未與時(shí)鐘同步。這允許第一個(gè)寄存器進(jìn)入亞穩(wěn)態(tài)并在下一個(gè)時(shí)鐘和更新第二個(gè)寄存器之前恢復(fù)。這確保了同步器下游的寄存器不會(huì)冒著看到亞穩(wěn)態(tài)值和在設(shè)計(jì)中傳播問題的風(fēng)險(xiǎn)。

因此,我們需要使用這樣的同步器來同步輸入的開關(guān)信號(hào)。

一旦我們同步了信號(hào),我們就需要消除信號(hào)的反彈,因?yàn)榉磸椚匀粫?huì)通過同步器,它們只是與時(shí)鐘同步。

我們可以使用一個(gè)簡單的同步器和計(jì)數(shù)器來消除開關(guān)輸入的反彈

為了測(cè)試這段代碼,我們可以創(chuàng)建一個(gè)針對(duì)Basys 3板的Vivado項(xiàng)目,創(chuàng)建一個(gè)新的VHDL文件并模擬它。

我們將看到如下波形,其中輸入開關(guān)改變狀態(tài),它使用兩個(gè)寄存器同步,然后在輸入輸出之前等待10毫秒。

現(xiàn)在我們已經(jīng)消除了一個(gè)開關(guān)輸入,我們可以看看如何使用一個(gè)更復(fù)雜的開關(guān),如旋轉(zhuǎn)編碼器。

旋轉(zhuǎn)編碼器

旋轉(zhuǎn)編碼器是一種快速切換不同選項(xiàng)的方法,一個(gè)常見的例子是使用它的旋轉(zhuǎn)來控制LED或顯示屏的亮度。

它通常也被稱為正交編碼器,因?yàn)閮蓚€(gè)輸出a和B彼此位于90度,例如在正交中。

當(dāng)開關(guān)按時(shí)鐘或反時(shí)鐘方向旋轉(zhuǎn)時(shí),你會(huì)看到A和B的變化,當(dāng)然你會(huì)得到反彈。

根據(jù)兩個(gè)輸出A或B中哪一個(gè)有第一條邊,我們可以確定旋轉(zhuǎn)的方向。

通常旋轉(zhuǎn)編碼器也有一個(gè)按鈕,可用于確認(rèn)選擇等。

當(dāng)我們旋轉(zhuǎn)旋轉(zhuǎn)編碼器,我們會(huì)得到小故障,可以看到下面,但這些是較短的持續(xù)時(shí)間,因?yàn)檐囕喰D(zhuǎn)。

注意,使用的編碼器通常是高的,因?yàn)樗焕饋怼?

為了讀取編碼器并確定旋轉(zhuǎn)方向,我們可以使用邊緣檢測(cè)。

下面的代碼示例允許我們根據(jù)表盤的旋轉(zhuǎn)方向增加或減少向量值。

我們可以將其添加到我們的Vivado項(xiàng)目中,并使用下面的測(cè)試臺(tái)模擬其行為

運(yùn)行模擬,您可以看到計(jì)數(shù)隨著編碼器旋轉(zhuǎn)的變化而增加,然后減少。

通過切換設(shè)置的斜坡值模擬,我們可以看到計(jì)數(shù)增加,然后減少。

現(xiàn)在我們有兩個(gè)元素,我們需要我們的LED調(diào)光電路。下一個(gè)要素是創(chuàng)建驅(qū)動(dòng)電路。

脈寬調(diào)制

脈寬調(diào)制是偉大的提供可變功率負(fù)載和重建模擬信號(hào)與簡單的后處理與R和C。

PWM信號(hào)有兩個(gè)關(guān)鍵元素

?周期-信號(hào)的重復(fù)周期

?占空比-多少周期的信號(hào)是高的

對(duì)于本應(yīng)用程序,我們將使用50Hz PWM周期,并使用旋轉(zhuǎn)編碼器使PWM周期可控。

PWM的代碼是

而試驗(yàn)臺(tái)將設(shè)置幾個(gè)不同的PWM輸出

在我們的Vivado項(xiàng)目中運(yùn)行這個(gè)程序顯示如下,我們可以看到脈沖寬度隨著輸入需求的改變而改變。

現(xiàn)在,我們準(zhǔn)備將所有這些整合到Vivado設(shè)計(jì)中,并在硬件上進(jìn)行測(cè)試。

整合設(shè)計(jì)

為了開始這個(gè),我們將在Vivado創(chuàng)建一個(gè)新的框圖項(xiàng)目。在此基礎(chǔ)上,我們將添加剛剛創(chuàng)建的RTL課程代碼。

通過將IP核添加到框圖中,我們能夠創(chuàng)建頂層包裝器并綜合設(shè)計(jì)。

我已經(jīng)將旋轉(zhuǎn)編碼器連接到A和B輸入,旋轉(zhuǎn)編碼器還包括1毫秒的彈跳鎖定。我還稍微更改了代碼,每次旋轉(zhuǎn)增加/減少8,以停止需要256次調(diào)整。

我還增加了第二個(gè)LED連接到按鈕開關(guān)時(shí),旋轉(zhuǎn)開關(guān)被推動(dòng)。這是連接到消跳電路。

讓Vivado管理包裝器

一旦合成完成,我們就可以在XDC文件中分配IO

一旦比特流完成,我們就可以下載并在硬件上進(jìn)行測(cè)試。

當(dāng)旋轉(zhuǎn)編碼器改變時(shí),我們可以看到ILA上的LED值發(fā)生變化。

總結(jié)

雖然是一個(gè)簡單的項(xiàng)目,但我希望這個(gè)項(xiàng)目已經(jīng)提供了信息和有用的,特別是如果你剛剛開始你的FPGA之旅。在更復(fù)雜的解決方案中,與交換機(jī)接口和處理反彈可能會(huì)導(dǎo)致意外命令的問題。

本文編譯自hackster.io

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉