資料介紹
描述
介紹
VHDL 一直讓我很感興趣,剛從 Digilent 收到我的新 Arty S7-25 FPGA 板,我有機會嘗試一下!我想為我的第一個項目使用 LED 做一些事情,所以我制作了一些不同的模式,并在代碼中將它們綁定在一起,以便它們一個接一個地顯示。
作為 VHDL 的新手,代碼可能達不到標準,但我會盡力解釋,我希望你也能得到這些很酷的模式來點亮你的 FPGA 板!
我們將使用板上的四個標準 LED(不是 RGB LED)

代碼
			代碼的總體思路是讓不同的計數(shù)器控制具有使能信號的模式的長度。這些使能信號由狀態(tài)機驅(qū)動。另一個process模塊對啟用信號進行解碼,并確定 LED 上應(yīng)顯示的模式。
可以在此處找到 github 存儲庫。查看“src”文件夾以找到主要實體。
首先,我有一些信號聲明
-- 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)遵循的模式,以及啟用特定于該模式的計數(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;
		
			實體需要知道何時改變模式(在這種情況下,每 3 秒一次,或何時r_clk_cntr翻轉(zhuǎn)),因此r_change_pattern被創(chuàng)建。此外,狀態(tài)機的狀態(tài)在此處聲明。
讓我們進入其中一種模式。
模式 1 一個接一個地切換每個 LED,就像一個帶有單個 1 的移位寄存器,其余的都是零(希望這是有道理的:p)。“on” LED 保持亮起 83.333 ms(1/12 秒很容易使用 12 MHz 系統(tǒng)時鐘實現(xiàn)),然后每 83.333 ms 打開一個新 LED。我為這些計數(shù)器創(chuàng)建了兩個單獨的進程。
-- 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 周期計數(shù))是使用時間的簡單度量。r_patt1_cntr在翻轉(zhuǎn)到 0 之前計數(shù)到這個數(shù)字,導致 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) 以便于閱讀。然后,對此進行檢查。如果r_patt_en = "1000", 意思r_patt1_en是激活的,模式 1 將顯示在 LED 上。但是,在模式 1 期間會發(fā)生什么?
			還記得PATT1_ALT_CNTR_PROC嗎?該過程增加了一個名為 的信號r_patt1_light_LED,該信號由PATT_DECODE_PROC(上面)使用 case 語句讀取,并點亮與 的值相對應(yīng)的每個 LED r_patt1_light_LED。
			其余模式以這種方式編碼,帶有計數(shù)器和使能,然后中的 case 語句PATT_DECODE_PROC點亮 LED。除了上面的示例模式之外,還有一個切換模式、一個心跳模式和一個使用 PWM 的調(diào)光模式。
模擬
github repo 上的“sim”文件中有一個測試臺。如果您選擇運行 sim,只需知道它可能需要大約 8 分鐘(取決于您的機器)。每個模式顯示 3 秒,因此最短模擬時間應(yīng)該是 12 秒才能看到所有 4 個模式。
這是幾分鐘后我的 sim 卡的樣子:

您可以清楚地看到第一個模式的類似移位寄存器的行為,以及心跳模式。最后的PWM調(diào)光模式只能放大查看。
構(gòu)建項目
打開 Vivado 并創(chuàng)建一個項目。出現(xiàn)提示時,從“Boards”菜單中選擇“Arty S7-25”。

如果您沒有看到這個,請使用此處找到的 Digilent 更新您的電路板文件。
從 github repo 添加源文件、sim 文件和約束文件,并生成比特流。
對您的電路板進行編程,您應(yīng)該會在 4 個 LED 上看到一些整齊的圖案:)
結(jié)論
感謝您關(guān)注我的第一個 VHDL/Arty S7 項目!請修改代碼以創(chuàng)建您自己的模式!在評論中發(fā)布任何新模式或問題。我想看看你創(chuàng)造了什么:)
?
- 高通 S7 和S7 Pro 音頻芯片
 - 基于Digilent Arty S7加速計的Windows鼠標
 - SIMATIC NET OPC服務(wù)器與PLC的S7連接簡介 1次下載
 - 西門子S7程序軟件下載 23次下載
 - 通過MPI建立OPC服務(wù)器與S7-200 PLC集成口的S7連接 5次下載
 - 西門子的SIMATIC S7 STEP7 V5.0使用手冊 37次下載
 - S7系列PLC上位機通信及PRODAVE軟件包在上位機中的使用資料說明 31次下載
 - 西門子s7-300和s7-400集成PN口的s7通信 14次下載
 - 比亞迪S7電路圖 120次下載
 - S7通訊的功能及特點 19次下載
 - S7 路由功能說明介紹 9次下載
 - 基于S7-1500的S7通信編程 39次下載
 - 西門子S7-400 工業(yè)軟件 S7 F FH Systems組態(tài) 17次下載
 - Arty Board Artix-7 FPGA開源創(chuàng)客開發(fā)板用戶手冊 205次下載
 - SIMATIC S7系統(tǒng)概述
 
- 西門子S7協(xié)議與TCP協(xié)議的區(qū)別 4063次閱讀
 - S7-1500之間S7通信實例 3299次閱讀
 - 西門子S7-1500 之間 S7 通信 5798次閱讀
 - 西門子支持S7子網(wǎng)路由功能的模塊有哪些? 1355次閱讀
 - S7-1200 CPU與S7-200 SMART S7通信教程 6657次閱讀
 - S7-1200 CPU與S7-200 SMART S7通信指南 3209次閱讀
 - 如何在WinCC上顯示S7 CPU的運行模式 1113次閱讀
 - S7-400基于PROFIBUS總線的S7單邊通信 1642次閱讀
 - S7-1500和S7-1500之間S7通信 3073次閱讀
 - S7-400基于PROFIBUS總線的S7單邊通信的組態(tài)步驟 3670次閱讀
 - digilentSpartan-7開源創(chuàng)客開發(fā)板介紹 3371次閱讀
 - digilent Arty A7-100 FPGA開源創(chuàng)客開發(fā)板介紹 6649次閱讀
 - digilent Cmod S7: Spartan-7 FPGA 介紹 3162次閱讀
 - S7-1200和S7-1200進行S7通信的詳細資料說明 2.9w次閱讀
 - 三星S7和三星S6的區(qū)別對比 1.5w次閱讀
 
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
 - 1.06 MB | 532次下載 | 免費
 - 2RK3399完整板原理圖(支持平板,盒子VR)
 - 3.28 MB | 339次下載 | 免費
 - 3TC358743XBG評估板參考手冊
 - 1.36 MB | 330次下載 | 免費
 - 4DFM軟件使用教程
 - 0.84 MB | 295次下載 | 免費
 - 5元宇宙深度解析—未來的未來-風口還是泡沫
 - 6.40 MB | 227次下載 | 免費
 - 6迪文DGUS開發(fā)指南
 - 31.67 MB | 194次下載 | 免費
 - 7元宇宙底層硬件系列報告
 - 13.42 MB | 182次下載 | 免費
 - 8FP5207XR-G1中文應(yīng)用手冊
 - 1.09 MB | 178次下載 | 免費
 
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
 - 0.00 MB | 234315次下載 | 免費
 - 2555集成電路應(yīng)用800例(新編版)
 - 0.00 MB | 33566次下載 | 免費
 - 3接口電路圖大全
 - 未知 | 30323次下載 | 免費
 - 4開關(guān)電源設(shè)計實例指南
 - 未知 | 21549次下載 | 免費
 - 5電氣工程師手冊免費下載(新編第二版pdf電子書)
 - 0.00 MB | 15349次下載 | 免費
 - 6數(shù)字電路基礎(chǔ)pdf(下載)
 - 未知 | 13750次下載 | 免費
 - 7電子制作實例集錦 下載
 - 未知 | 8113次下載 | 免費
 - 8《LED驅(qū)動電路設(shè)計》 溫德爾著
 - 0.00 MB | 6656次下載 | 免費
 
總榜
- 1matlab軟件下載入口
 - 未知 | 935054次下載 | 免費
 - 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
 - 78.1 MB | 537798次下載 | 免費
 - 3MATLAB 7.1 下載 (含軟件介紹)
 - 未知 | 420027次下載 | 免費
 - 4OrCAD10.5下載OrCAD10.5中文版軟件
 - 0.00 MB | 234315次下載 | 免費
 - 5Altium DXP2002下載入口
 - 未知 | 233046次下載 | 免費
 - 6電路仿真軟件multisim 10.0免費下載
 - 340992 | 191187次下載 | 免費
 - 7十天學會AVR單片機與C語言視頻教程 下載
 - 158M | 183279次下載 | 免費
 - 8proe5.0野火版下載(中文版免費下載)
 - 未知 | 138040次下載 | 免費
 
	                電子發(fā)燒友App
	            
	        
	        
          
        
        
	                    
                        
                        
                        
                        
                        


創(chuàng)作
發(fā)文章
發(fā)帖  
提問  
發(fā)資料
發(fā)視頻
上傳資料賺積分
           
            
            
                
            
評論