Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory 如何在spartan 3e fpga中传输小视频?_Memory_Image Processing_Video Processing_Vhdl_Fpga - Fatal编程技术网

Memory 如何在spartan 3e fpga中传输小视频?

Memory 如何在spartan 3e fpga中传输小视频?,memory,image-processing,video-processing,vhdl,fpga,Memory,Image Processing,Video Processing,Vhdl,Fpga,通过使用cosmiac教程13和ISE 10.1,pdf文件显示了如何生成图像,您可以通过单击第一个.zip文件下载项目。在项目结束时,它说…现在尝试用类似的方法流式播放一段小视频。 注:需要适当修改Matlab文件以获得像素信息和 reader.vhd与所使用的视频规范一致。还需要得到一个视频,其中只使用8 颜色(可由Spartan-3E板表示),以获得干净的输出 我的问题是。。。如果我有matlab.coe文件(视频帧),我是否使用单端口ram(核心内存生成器中的ram类型)来传输小视频?我

通过使用cosmiac教程13和ISE 10.1,pdf文件显示了如何生成图像,您可以通过单击第一个.zip文件下载项目。在项目结束时,它说…现在尝试用类似的方法流式播放一段小视频。 注:需要适当修改Matlab文件以获得像素信息和 reader.vhd与所使用的视频规范一致。还需要得到一个视频,其中只使用8 颜色(可由Spartan-3E板表示),以获得干净的输出

我的问题是。。。如果我有matlab.coe文件(视频帧),我是否使用单端口ram(核心内存生成器中的ram类型)来传输小视频?我如何修改下面的阅读器

假设我从2帧(2幅图像)开始。我想像视频一样背靠背地显示它,或者在另一帧上显示一帧(更简单)

记住的东西..vhdl编程语言,Xilinx ise任何版本(我可以更新),Xilinx影响

---------------------------------------------------------------------------------
-- 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;
---------------------------------------------------------------------------------
--文件名:reader.vhd
----------------------------------------------------------------------------------
图书馆IEEE;
使用IEEE.STD_LOGIC_1164.ALL;
使用IEEE.STD_LOGIC_ARITH.ALL;
使用IEEE.STD_LOGIC_UNSIGNED.ALL;
实体读取器是
端口(时钟,复位:在标准逻辑中;
行:标准逻辑向量(9到0);
列:标准逻辑向量(9到0);
地址:输出标准逻辑向量(15到0);
ennormal,enencryp:输出标准逻辑;
数据输入:标准逻辑向量(2到0);
数据输出:输出标准逻辑向量(2到0);
终端阅读器;
读者的行为架构是
常数vtop:整数:=128;
常量vbottom:整数:=351;
常数htop1:整数:=64;
常数hbottom1:整数:=287;
常数htop2:整数:=352;
常数hbottom2:整数:=575;
信号地址正常:标准逻辑向量(15到0):=(其他=>'0');
信号地址加密:标准逻辑向量(15到0):=(其他=>'0');
信号en_正常:标准_逻辑:='0';
信号加密:标准逻辑:='0';
开始
ens:进程(时钟、重置)
开始
如果重置='1',则

en_normal您可能对开放图形项目感兴趣:

他们也使用Xilinx Spartan 3,但他们的代码是Verilog:

svn co svn://svn.opengraphics.org/ogp

当大多数人谈论视频时,他们指的是大量的数据。作为一个块RAM,比一个使用了15年的低端FPGA可能包含的数据多得多。即使考虑到压缩。特别是考虑到压缩,因为这种FPGA几乎无法解码任何有效的视频编解码器

所以,除非你试图做一些非常复古或异国情调(或两者兼而有之),否则我不建议将视频存储在BRAM中。寻找带有DRAM控制器的FPGA,并改用外部DDR1/2/3/where

回到您的问题,如果您打算在BRAM中存储视频,您可以使用默认值将其设置为单端口ROM,只需在块ram生成器GUI中添加coe文件。 问题是,您打算如何输出视频?您是否连接了一些RGB/VGA显示器?还是带模拟电视的NTSC编码器?还是HDMI?您需要一个控制器来输出视频,在某些情况下,它可能不适合您的FPGA