cosmiacチュートリアル13 http://www.cosmiac.org/tutorial_13.htmlとISE 10.1を使用するとpdfファイルに画像を生成する方法が示され、最初の.zipファイルをクリックするとプロジェクトをダウンロードできます。プロジェクトの終わりに、それは言う...今、同様の方法で小さなビデオをストリーミングしようとする。 注:Matlabファイルを適切に修正してピクセル情報を取得し、 reader.vhdを使用するビデオ仕様に変更する必要があります。クリーンな出力を得るには、8 の色(Spartan-3Eボードで表現可能)のみを使用するビデオも必要です。スパータン3e fpgaで小さなビデオをストリーミングする方法は?
私の質問は... matlab .coeファイル(ビデオフレーム)がある場合、小さなビデオをストリームするために、単一のポートRAM(コアメモリジェネレータのRAMの種類)を使用しますか?以下の読者を変更するにはどうすればよいですか?
私は2つのフレーム(2つの画像)から始まります。私は、ビデオのように背中合わせに、または別のものの上に1つ(より簡単に)表示したいと思います。
覚えておくべきこと.. vhdlプログラミング言語、ザイリンクスise任意のバージョン(私が更新可能)、ザイリンクスインパクト。
---------------------------------------------------------------------------------
-- File Name: reader.vhd
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity reader is
Port (clk, reset : in STD_LOGIC;
row : in STD_LOGIC_VECTOR (9 downto 0);
col : in STD_LOGIC_VECTOR (9 downto 0);
addr : out STD_LOGIC_VECTOR (15 downto 0);
ennormal, enencryp : out std_logic;
datain : in STD_LOGIC_VECTOR (2 downto 0);
dataout : out STD_LOGIC_VECTOR (2 downto 0));
end reader;
architecture Behavioral of reader is
constant vtop : integer := 128;
constant vbottom : integer := 351;
constant htop1 : integer := 64;
constant hbottom1 : integer := 287;
constant htop2 : integer := 352;
constant hbottom2 : integer := 575;
signal addr_normal : STD_LOGIC_VECTOR (15 downto 0) := (others => '0');
signal addr_encryp : STD_LOGIC_VECTOR (15 downto 0) := (others => '0');
signal en_normal : std_logic := '0';
signal en_encryp : std_logic := '0';
begin
ens : process (clk, reset)
begin
if reset = '1' then
en_normal <= '0';
en_encryp <= '0';
elsif clk'event and clk='1' then
if (row >= vtop) and (row <= vbottom) then
if (col >= htop1) and (col <= hbottom1) then
en_normal <= '1';
en_encryp <= '0';
elsif (col >= htop2) and (col <= hbottom2) then
en_normal <= '0';
en_encryp <= '1';
else
en_normal <= '0';
en_encryp <= '0';
end if;
else
en_normal <= '0';
en_encryp <= '0';
end if;
end if;
end process ens;
c_normal: process (clk, reset)
begin
if reset = '1' then
addr_normal <= (others => '0');
elsif clk'event and clk='1' then
if en_normal = '1' then
if addr_normal = 50175 then
addr_normal <= (others => '0');
else
addr_normal <= addr_normal + 1;
end if;
end if;
end if;
end process c_normal;
c_encryp: process (clk, reset)
begin
if reset = '1' then
addr_encryp <= (others => '0');
elsif clk'event and clk='1' then
if en_encryp = '1' then
if addr_encryp = 50175 then
addr_encryp <= (others => '0');
else
addr_encryp <= addr_encryp + 1;
end if;
end if;
end if;
end process c_encryp;
addr <= addr_normal when (en_normal = '1') else addr_encryp;
dataout <= datain;
ennormal <= en_normal;
enencryp <= en_encryp;
end Behavioral;