RM新时代网站-首页

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>Arty S7 FPGA板上的LED圖案

Arty S7 FPGA板上的LED圖案

2023-06-15 | zip | 0.00 MB | 次下載 | 免費(fèi)

資料介紹

描述

介紹

VHDL 一直讓我很感興趣,剛從 Digilent 收到我的新 Arty S7-25 FPGA 板,我有機(jī)會嘗試一下!我想為我的第一個項(xiàng)目使用 LED 做一些事情,所以我制作了一些不同的模式,并在代碼中將它們綁定在一起,以便它們一個接一個地顯示。

作為 VHDL 的新手,代碼可能達(dá)不到標(biāo)準(zhǔn),但我會盡力解釋,我希望你也能得到這些很酷的模式來點(diǎn)亮你的 FPGA 板!

我們將使用板上的四個標(biāo)準(zhǔn) LED(不是 RGB LED)

poYBAGNh0M-Ae3hEAAB2LD51Lbg446.jpg
Arty S7 板上的標(biāo)準(zhǔn) LED 位置
?

代碼

代碼的總體思路是讓不同的計(jì)數(shù)器控制具有使能信號的模式的長度。這些使能信號由狀態(tài)機(jī)驅(qū)動。另一個process模塊對啟用信號進(jìn)行解碼,并確定 LED 上應(yīng)顯示的模式。

可以在此處找到 github 存儲庫查看“src”文件夾以找到主要實(shí)體。

首先,我有一些信號聲明

-- enables for different patterns/counters
signal r_patt1_en : std_logic := '1';
signal r_patt2_en : std_logic := '0';
signal r_patt3_en : std_logic := '0';
signal r_patt4_en : std_logic := '0';

-- pattern counters
signal r_patt1_cntr      : integer range 0 to 1e6 := 0;
signal r_patt1_light_LED : integer range 0 to 4   := 0;
signal r_patt2_cntr      : integer range 0 to 2e6 := 0;
signal r_patt3_cntr      : integer range 0 to 2e6 := 0;
signal r_patt3_alt_cntr  : integer range 0 to 5   := 0;
signal r_patt4_duty      : integer range 0 to 1e5 := 0;
signal r_patt4_cntr      : integer range 0 to 1e5 := 0;
signal r_patt4_incr_duty : std_logic := '0';

上述代碼的頂部包含每個模式的啟用信號。在任何給定時間,只有一個可以處于活動狀態(tài)。這些信號有助于確定 LED 應(yīng)遵循的模式,以及啟用特定于該模式的計(jì)數(shù)器。

這些是其他一些信號

-- indicates if pattern should be changed
signal r_change_pattern : std_logic := '0';

signal r_clk_cntr : integer range 0 to 36e6 := 0;

-- FSM
type t_state is (PATT1, PATT2, PATT3, PATT4);
signal STATE : t_state;

實(shí)體需要知道何時改變模式(在這種情況下,每 3 秒一次,或何時r_clk_cntr翻轉(zhuǎn)),因此r_change_pattern被創(chuàng)建。此外,狀態(tài)機(jī)的狀態(tài)在此處聲明。

讓我們進(jìn)入其中一種模式。

模式 1 一個接一個地切換每個 LED,就像一個帶有單個 1 的移位寄存器,其余的都是零(希望這是有道理的:p)。“on” LED 保持亮起 83.333 ms(1/12 秒很容易使用 12 MHz 系統(tǒng)時鐘實(shí)現(xiàn)),然后每 83.333 ms 打開一個新 LED。我為這些計(jì)數(shù)器創(chuàng)建了兩個單獨(dú)的進(jìn)程。

-- pattern 1 counter keeps each LED on in pattern 1 for 83.333 ms
PATT1_CNTR_PROC : process(i_clk)
begin
  if rising_edge(i_clk) then
    if r_patt1_en = '0' then
      r_patt1_cntr <= 0;
    else
      if r_patt1_cntr < 1e6 then
        r_patt1_cntr <= r_patt1_cntr + 1;
      else
        r_patt1_cntr <= 0;
      end if;
    end if;
  end if;
end process;

對于 12 MHz 系統(tǒng)時鐘,1/12 秒(或 100 萬個 clk 周期計(jì)數(shù))是使用時間的簡單度量。r_patt1_cntr在翻轉(zhuǎn)到 0 之前計(jì)數(shù)到這個數(shù)字,導(dǎo)致 1/12 秒或 83.333 毫秒。

-- pattern 1 alt counter signals when to switch LEDs every 83.333 ms
PATT1_ALT_CNTR_PROC : process(i_clk)
begin
  if rising_edge(i_clk) then
    if r_patt1_en = '0' then
      r_patt1_light_LED <= 0;
    else
      if r_patt1_cntr = 1e6 then
        if r_patt1_light_LED < 4 then
          r_patt1_light_LED <= r_patt1_light_LED + 1;
        else
          r_patt1_light_LED <= 0;
        end if;
      end if;
    end if;
  end if;
end process;

PATT1_ALT_CNTR_PROC監(jiān)視r_patt1_cntr并查找 1e6 的最大值。一旦完成,r_patt1_light_LED就會增加。這將確定哪個 LED 亮起。

在代碼的更下方,我們看到PATT_DECODE_PROC.這個過程(如下)決定了在模式啟用時應(yīng)該發(fā)生什么。

PATT_DECODE_PROC : process(i_clk)
  variable r_patt_en : std_logic_vector(3 downto 0);
begin
  if rising_edge(i_clk) then
    r_patt_en := r_patt1_en & r_patt2_en & r_patt3_en & r_patt4_en;  -- cnct into vect
  if r_patt_en = "1000" then  -- blink LEDS in circle
    case r_patt1_light_LED is
      when 0 =>
        r_LEDs <= "0001";
          when 1 =>
        r_LEDs <= "0010";
          when 2 =>
        r_LEDs <= "0100";
          when 3 =>
        r_LEDs <= "1000";
          when 4 =>
        r_LEDs <= "0000";
    end case;

首先,所有不同的模式使能連接成一個向量 ( r_patt_en) 以便于閱讀。然后,對此進(jìn)行檢查。如果r_patt_en = "1000", 意思r_patt1_en是激活的,模式 1 將顯示在 LED 上。但是,在模式 1 期間會發(fā)生什么?

還記得PATT1_ALT_CNTR_PROC嗎?該過程增加了一個名為 的信號r_patt1_light_LED,該信號由PATT_DECODE_PROC(上面)使用 case 語句讀取,并點(diǎn)亮與 的值相對應(yīng)的每個 LED r_patt1_light_LED。

其余模式以這種方式編碼,帶有計(jì)數(shù)器和使能,然后中的 case 語句PATT_DECODE_PROC點(diǎn)亮 LED。除了上面的示例模式之外,還有一個切換模式、一個心跳模式和一個使用 PWM 的調(diào)光模式。

模擬

github repo 上的“sim”文件中有一個測試臺。如果您選擇運(yùn)行 sim,只需知道它可能需要大約 8 分鐘(取決于您的機(jī)器)。每個模式顯示 3 秒,因此最短模擬時間應(yīng)該是 12 秒才能看到所有 4 個模式。

這是幾分鐘后我的 sim 卡的樣子:

pYYBAGNh0NOAIzLqAAL3SJ05r2Y282.png
LED圖案的模擬
?

您可以清楚地看到第一個模式的類似移位寄存器的行為,以及心跳模式。最后的PWM調(diào)光模式只能放大查看。

構(gòu)建項(xiàng)目

打開 Vivado 并創(chuàng)建一個項(xiàng)目。出現(xiàn)提示時,從“Boards”菜單中選擇“Arty S7-25”。

poYBAGNh0NiAdvIdAAD1RCh9-oc234.jpg
?

如果您沒有看到這個,請使用此處找到的 Digilent 更新您的電路板文件。

從 github repo 添加源文件、sim 文件和約束文件,并生成比特流。

對您的電路板進(jìn)行編程,您應(yīng)該會在 4 個 LED 上看到一些整齊的圖案:)

結(jié)論

感謝您關(guān)注我的第一個 VHDL/Arty S7 項(xiàng)目!請修改代碼以創(chuàng)建您自己的模式!在評論中發(fā)布任何新模式或問題。我想看看你創(chuàng)造了什么:)

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
RM新时代网站-首页