0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

3天內(nèi)不再提示

設(shè)計(jì)FPGA的過程舉例

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

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

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

(1)需求分析

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

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

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

(5)驗(yàn)證

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

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

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

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

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

首先運(yùn)行ISE Design Suite 14.5,打開Project Navigator軟件。

設(shè)計(jì)FPGA的過程舉例

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

設(shè)計(jì)FPGA的過程舉例

按照上圖進(jìn)行工程設(shè)置,然后點(diǎn)Next

設(shè)計(jì)FPGA的過程舉例

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

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

設(shè)計(jì)FPGA的過程舉例

設(shè)計(jì)FPGA的過程舉例

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

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

設(shè)計(jì)FPGA的過程舉例

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

設(shè)計(jì)FPGA的過程舉例

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

設(shè)計(jì)FPGA的過程舉例

第一步,默認(rèn)設(shè)置,Next。。。

設(shè)計(jì)FPGA的過程舉例

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

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

設(shè)計(jì)FPGA的過程舉例

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

再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;

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

Add Source,選UCF,命名myled.ucf,內(nèi)容如下:

##

## 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;

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

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

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

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

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

3. 網(wǎng)絡(luò)。

4. USB通信

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

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

    關(guān)注

    1640

    文章

    21899

    瀏覽量

    611394
收藏 0人收藏

    評論

    相關(guān)推薦

    Verilog語言在FPGA中運(yùn)用的簡單實(shí)例有什么,求舉例?

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

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

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

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

    舉例說明FPGA作為協(xié)處理器在實(shí)時系統(tǒng)中有哪些應(yīng)用?FPGA用于協(xié)處理器有什么結(jié)構(gòu)特點(diǎn)和設(shè)計(jì)原則?
    發(fā)表于 04-08 06:48

    鎖相環(huán)設(shè)計(jì)舉例

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

    簡化Xilinx和Altera FPGA調(diào)試過程

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

    DSP和FPGA共用FLASH進(jìn)行配置的方法

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

    FPGA應(yīng)用舉例

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

    FPGA應(yīng)用舉例

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

    DSP匯編編程及應(yīng)用舉例

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

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

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

    FPGA選型和設(shè)計(jì)過程

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

    FPGA設(shè)計(jì)過程中常用的FIFO

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

    觸發(fā)器應(yīng)用舉例

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

    FPGA的編譯過程討論

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

    Pt文件及舉例

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

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品