一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

設計FPGA的過程舉例

Hx ? 作者:工程師陳翠 ? 2018-07-13 08:17 ? 次閱讀

數字電路經過半個世紀,從分立元件到小規(guī)模集成電路、中等規(guī)模集成電路、大規(guī)模、超大規(guī)模,集成度越來越高,運算能力越來越強,功耗越來越低,人類已經將數字集成電路發(fā)展到接近摩爾定律極限。

FPGA是這樣一類數字電路,它可以反復修改自身邏輯功能,具有靈活多變的特性,設計FPGA的過程其實是遵循數字電路設計的一般流程的:

(1)需求分析

(2)抽象邏輯表示(真值表、狀態(tài)流圖)

(3)具體邏輯表示(HDL、布爾方程)

(4)將邏輯表示綜合為可實現(xiàn)的電路(門電路、LUT和觸發(fā)器)

(5)驗證

FPGA邏輯工程師一般是從應用需求出發(fā),用Verilog或VHDL來描述算法,并通過綜合實現(xiàn)工具、仿真工具、調試工具來協(xié)助完成設計。

針對Xilinx器件,開發(fā)工具為ISE(Project Navigator,ISim,iMact,Chipscope),有時需要用Modelsim工具完成HDL仿真。

Zynq內部包含PL,資源前面已經說過了,大量LUT,F(xiàn)F,DSP48E1等著你來組織,開發(fā)PL可以完全脫離PS,采用傳統(tǒng)開發(fā)工具ISE完成。

下面給出只利用PL實現(xiàn)流水燈的例子,希望能有拋磚引玉的功效。

上一節(jié)介紹了使用ARM控制流水燈的例子,這里完成同樣的功能,但用PL實現(xiàn)控制,將PS冷落一旁,不用理它。

首先運行ISE Design Suite 14.5,打開Project Navigator軟件。

設計FPGA的過程舉例

File-》New Project,新建一個工程,彈出對話框如下:

設計FPGA的過程舉例

按照上圖進行工程設置,然后點Next

設計FPGA的過程舉例

設置器件為XC7Z020,即我們Zedboard上的主芯片型號。封裝為CLG484,速度級別為-1,語言選擇VHDL。點Next,F(xiàn)inish。

我們分析一下怎樣完成這個設計。數字電路都需要有時鐘源,我們的PL也不例外,板子上有專為PL提供時鐘輸入的晶振,在原理圖中找到:

設計FPGA的過程舉例

設計FPGA的過程舉例

可見晶振輸入為100MHz,直接送入Y9引腳(位于PL部分)。如此高的時鐘速率,需要經過分頻,LED閃爍速率最好低于10Hz,這樣人眼才能分辨出來。

用ISE提供的IP核可以實現(xiàn)分頻,在工程中Add Source:

設計FPGA的過程舉例

選擇IP(Core Generator),輸入名稱為clk_module,如上圖,點Next。

設計FPGA的過程舉例

從“FPGA Features and Design”中“Clocking“下找到Clocking Wizard,點Next,F(xiàn)inish。進入配置IP的環(huán)節(jié)。

設計FPGA的過程舉例

第一步,默認設置,Next。。。

設計FPGA的過程舉例

第二步,將CLK_OUT1輸出頻率設置為5MHz(貌似不能再小了),其他不改,點Next。

第三步里把復位和鎖定引腳去掉,如下圖所示,后面都一路Next到結束。

設計FPGA的過程舉例

這樣生成了第一個分頻器,輸入為100MHz,輸出為5MHz,需要進一步分頻。

再New Source一下,選VHDL模塊,命名為myled.vhd,輸入代碼如下:

----------------------------------------------------------------------------------

-- Company:

-- Engineer:

--

-- Create Date: 20:59:03 08/16/2013

-- Design Name:

-- Module Name: myled - Behavioral

-- Project Name:

-- Target Devices:

-- Tool versions:

-- Description:

--

-- Dependencies:

--

-- Revision:

-- Revision 0.01 - File Created

-- Additional Comments:

--

----------------------------------------------------------------------------------

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

-- Uncomment the following library declaration if using

-- arithmetic functions with Signed or Unsigned values

--use IEEE.NUMERIC_STD.ALL;

-- Uncomment the following library declaration if instantiating

-- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity myled is

Port ( clk : in STD_LOGIC;

rst : in STD_LOGIC;

led : out STD_LOGIC_VECTOR(7 downto 0));

end myled;

architecture Behavioral of myled is

signal clk_5M : STD_LOGIC;

signal localbuffer :STD_LOGIC_VECTOR(7 downto 0);

component clk_module

port

(-- Clock in ports

CLK_IN1 : in std_logic;

-- Clock out ports

CLK_OUT1 : out std_logic

);

end component;

begin

myclk : clk_module

port map

(-- Clock in ports

CLK_IN1 =》 clk,

-- Clock out ports

CLK_OUT1 =》 clk_5M);

process(clk_5M,rst)

variable cnt : integer := 0;

begin

led 《= localbuffer;

if(rst = ‘1’) then

localbuffer 《= X”01“;

elsif(clk_5M‘EVENT and clk_5M = ’1‘)

then

cnt := cnt + 1;

if (cnt = 5000000)

then

localbuffer 《= localbuffer(6 downto 0)&localbuffer(7);

cnt := 0;

end if;

end if;

end process;

end Behavioral;

這里使用計數器實現(xiàn)了分頻,輸出為1Hz。

Add Source,選UCF,命名myled.ucf,內容如下:

##

## This is an updated UCF file from the original version by Digilink.

## The CS signal has been removed and all the other signals are mapped to

## proper pin on the Zynq FPGA.

## For the reset, the middle-push button is used.

## Modified by Farhad Abdolian (fabdolian@seemaconsulting.com) Nov. 5, 2012

##

Net ”clk“ LOC=Y9 | IOSTANDARD=LVCMOS33;

Net ”clk“ TNM_NET = sys_clk_pin;

TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 100000 kHz;

NET ”led[0]“ LOC = T22;

NET ”led[1]“ LOC = T21;

NET ”led[2]“ LOC = U22;

NET ”led[3]“ LOC = U21;

NET ”led[4]“ LOC = V22;

NET ”led[5]“ LOC = W22;

NET ”led[6]“ LOC = U19;

NET ”led[7]“ LOC = U14;

NET ”led[7]“ IOSTANDARD = LVCMOS33;

NET ”led[6]“ IOSTANDARD = LVCMOS33;

NET ”led[5]“ IOSTANDARD = LVCMOS33;

NET ”led[4]“ IOSTANDARD = LVCMOS33;

NET ”led[3]“ IOSTANDARD = LVCMOS33;

NET ”led[2]“ IOSTANDARD = LVCMOS33;

NET ”led[1]“ IOSTANDARD = LVCMOS33;

NET ”led[0]“ IOSTANDARD = LVCMOS33;

#We use the center push button as the reset for this project

Net ”rst“ LOC = P16 | IOSTANDARD = LVCMOS33;

源文件都已經OK,接下來進行綜合、實現(xiàn)、生成bit、iMPACT下載即可(按照標準FPGA開發(fā)流程),效果與前面的實驗相同,略去不表。這里由于邏輯比較簡單,省去了功能仿真、時序仿真等流程。真正的邏輯開發(fā)最好經過仿真后再下載到硬件中。

從上面這個例子發(fā)現(xiàn),不考慮ARM時,PL部分開發(fā)與普通的FPGA開發(fā)并沒有任何區(qū)別。

恰恰是由于ARM的存在,我們的PL可以實現(xiàn)更多復雜的功能!

1. DDR控制。采用邏輯來實現(xiàn)DDR2存儲器訪問非常復雜,調試也非常耗費時間。ARM核的存在,使得PL可以借助ARM來做DDR2控制器,訪問時只需遵循PS與PL之間的通信協(xié)議——AXI就可以了。

2. 操作系統(tǒng)。同樣,F(xiàn)PGA上運行操作系統(tǒng)是一件費力不討好的事情,浪費大量邏輯資源,如果用軟核實現(xiàn)CPU,性能又不高。如果有ARM硬核負責操作系統(tǒng)的日常維護,必要時FPGA仍然通過AXI總線與ARM上的操作系統(tǒng)進行交互。

3. 網絡。

4. USB通信

從傳統(tǒng)FPGA開發(fā)到Zynq上PL開發(fā)需要改變一個觀念:邏輯可以實現(xiàn)一切。嵌入硬核恰恰說明一點:有些事還是別讓邏輯來做!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1642

    文章

    21920

    瀏覽量

    612156
收藏 人收藏

    評論

    相關推薦

    Verilog語言在FPGA中運用的簡單實例有什么,求舉例?

    Verilog語言在FPGA中運用的簡單實例有什么,求舉例?
    發(fā)表于 03-16 00:59

    FPGA大神幫你解決開發(fā)過程的問題

    的,在有問題的時候能有人能夠解答,也是我感觸很深的一點,大家在帖子下方發(fā)出學習過程中遇到的問題,我會力所能及的回答大家的問題。希望大家在FPGA開發(fā)的道路上越來越順利。提問的范圍舉例:1、FP
    發(fā)表于 10-14 10:08

    舉例說明FPGA作為協(xié)處理器在實時系統(tǒng)中有哪些應用?

    舉例說明FPGA作為協(xié)處理器在實時系統(tǒng)中有哪些應用?FPGA用于協(xié)處理器有什么結構特點和設計原則?
    發(fā)表于 04-08 06:48

    鎖相環(huán)設計舉例

    鎖相環(huán)設計舉例:鎖相環(huán)設計主要包括:確定所需環(huán)的類型,選擇適當的帶寬,指出希望的穩(wěn)定度。下面將舉例說明要滿足這些設計要求而常用的基本方法。
    發(fā)表于 09-05 08:51 ?103次下載
    鎖相環(huán)設計<b class='flag-5'>舉例</b>

    簡化Xilinx和Altera FPGA調試過程

    簡化Xilinx和Altera FPGA調試過程:通過FPGAViewTM 解決方案,如混合信號示波器(MSO)和邏輯分析儀,您可以在Xilinx 和Altera FPGA 內部迅速移
    發(fā)表于 11-20 17:46 ?27次下載

    DSP和FPGA共用FLASH進行配置的方法

    本文舉例分析了DSP的引導裝載過程FPGA的配置流程,并據此提出了一種使用單個FLASH存儲器實現(xiàn)上述兩個功能的方法。
    發(fā)表于 07-21 17:14 ?13次下載

    FPGA應用舉例

    FPGA學習資料,有興趣的同學可以下載看看。
    發(fā)表于 04-07 11:10 ?14次下載

    FPGA應用舉例

    FPGA學習資料,有興趣的同學可以下載看看。
    發(fā)表于 04-11 13:48 ?86次下載

    DSP匯編編程及應用舉例

    DSP匯編編程及應用舉例
    發(fā)表于 12-06 15:22 ?24次下載

    典型高速系統(tǒng)應用框圖舉例

    典型高速系統(tǒng)應用框圖舉例
    的頭像 發(fā)表于 03-16 16:25 ?6465次閱讀
    典型高速系統(tǒng)應用框圖<b class='flag-5'>舉例</b>

    FPGA選型和設計過程

    如果你在采用FPGA的電路板設計方面的經驗很有限或根本沒有,那么在新的項目中使用FPGA的前景就十分堪憂——特別是如果FPGA是一個有1000個引腳的大塊頭。繼續(xù)閱讀本文將有助于你的FPGA
    的頭像 發(fā)表于 11-01 09:44 ?2186次閱讀

    FPGA設計過程中常用的FIFO

    無論何時,在復雜的 FPGA 設計過程中,都不可避免地需要在模塊之間發(fā)送數據,實現(xiàn)這一點的常用的是 FIFO。
    的頭像 發(fā)表于 09-20 09:10 ?2857次閱讀

    觸發(fā)器應用舉例

    觸發(fā)器應用舉例
    的頭像 發(fā)表于 03-15 16:40 ?1765次閱讀
    觸發(fā)器應用<b class='flag-5'>舉例</b>

    FPGA的編譯過程討論

    構建FPGA的第一階段稱為綜合。此過程將功能性RTL設計轉換為門級宏的陣列。這具有創(chuàng)建實現(xiàn)RTL設計的平面分層電路圖的效果。
    發(fā)表于 06-21 14:26 ?994次閱讀
    <b class='flag-5'>FPGA</b>的編譯<b class='flag-5'>過程</b>討論

    Pt文件及舉例

    Pt文件及舉例
    的頭像 發(fā)表于 05-15 09:42 ?2687次閱讀