FC2カウンター FPGAの部屋 AXIバスのEDKチュートリアルを試す11(カスタムIPをカスタマイズする)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

AXIバスのEDKチュートリアルを試す11(カスタムIPをカスタマイズする)

AXIバスのEDKチュートリアルを試す7(カスタムIPを作る1)
AXIバスのEDKチュートリアルを試す8(カスタムIPを作る2)
AXIバスのEDKチュートリアルを試す9(カスタムIPを作る3)”
AXIバスのEDKチュートリアルを試す10(カスタムIPを作る4)
で作ってきたLEDの点滅をするカスタムIPをカスタマイズしてみることにした。

チュートリアルのカスタムIPは、レジスタに1を書くとLEDの点滅が始まるが、2を書くとカウンタを+1するのではなく+2するようにした。よって、2倍早く点滅する。レジスタを読んだ時にカウンタの値も読めるようにした。VHDLソースの一部を下に示す。

  -- implement slave model software accessible register(s) read mux
  SLAVE_REG_READ_PROC : process( slv_reg_read_sel, slv_reg0 ) is
  begin

    case slv_reg_read_sel is
      when "1" => slv_ip2bus_data <= slv_reg0(1 downto 0) & "00" & count;
      when others => slv_ip2bus_data <= (others => '0');
    end case;

  end process SLAVE_REG_READ_PROC;

  ------------------------------------------
  -- Example code to drive IP to Bus signals
  ------------------------------------------
  IP2Bus_Data  <= slv_ip2bus_data when slv_read_ack = '1' else
                  (others => '0');

  IP2Bus_WrAck <= slv_write_ack;
  IP2Bus_RdAck <= slv_read_ack;
  IP2Bus_Error <= '0';

    -- Create Counter
    -- Use slv_reg0 value to enable counter (LSB = '1' to run, LSB = '0' to stop)
    counter : process(Bus2IP_Clk) begin
        if Bus2IP_Clk'event and Bus2IP_Clk='1' then
            if Bus2IP_Resetn = '0' then
                count <= (others => '0');
            else
                if slv_reg0(1 downto 0) = "01" then
                    count <= count + 1;
                elsif slv_reg0(1 downto 0) = "10" then
                    count <= count + 2;
                end if;
            end if;
        end if;
    end process counter;
    
    -- Attach slowest bits to LEDs
    LEDs(3 downto 0) <= count(27 downto 24);



1.XPSでProjectメニューから> Rescan User Repositoriesを選択して、blink pcoreの変更をXPSに認識させる。

2.XPSを閉じて、ProcessesウインドウでGenerate Programming File をダブルクリックして、インプリメントを開始した。

後は、”AXIバスのEDKチュートリアルを試す10(カスタムIPを作る4)”と同様に行なった。

3.XMDコンソールを起動して、XMD promptから”mwr 0x7c600000 0x1”と入れるとLEDの点滅が始まった。

4.XMD promptから”mrd 0x7c600000"と入れると、レジスタの値とカウンタの値が見えた。
SP605_AXI_EDK_111_110726.png

5.XMD promptから”mwr 0x7c600000 0x2”と入れるとLEDの点滅が速くなった。
SP605_AXI_EDK_112_110726.png

成功した。
もう1度、自分でカスタムIPを作って練習してみたい。
  1. 2011年07月26日 19:20 |
  2. EDK
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/1861-b0a0088a
この記事にトラックバックする(FC2ブログユーザー)