打印

求助---关于CPLD采集图象信号时序的问题

[复制链接]
1787|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
阿西西里|  楼主 | 2007-4-10 15:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用CPLD采集图象时序
采用VHDL语言
(第一次VHDL写程)
程序如下:
LIBRARY IEEE;
USE IEEE.Std_Logic_1164.ALL;
USE IEEE.Std_Logic_Arith.ALL;
USE IEEE.Std_Logic_Unsigned.ALL;

entity SAA7111A is 
  port ( 
-------SAA7111A_interface------------------------
        LLC2 : in std_logic;
        HREF : in std_logic;
        VREF : in std_logic;
        HS   : in std_logic;
        VS   : in std_logic;
        RTS0 : in std_logic;
        VPO  : in std_logic_vector(15 downto 0); 
        TAKE : in std_logic;
-------------------------------------------------
-------SRAM_interface----------------------------
        addr : out std_logic_vector(18 downto 0);
        data : out std_logic_vector(15 downto 0);
        nCE  : out std_logic;
        nWE  : out std_logic;
        nOE  : out std_logic;
        nUB  : out std_logic;
        nLB  : out std_logic;
-------------------------------------------------
-------interrupt_line----------------------------
        line : out std_logic
-------------------------------------------------
    );
end SAA7111A;

ARCHITECTURE SAA7111A_ac OF SAA7111A IS

  SIGNAL TempAddr : STD_LOGIC_VECTOR(18 DOWNTO 0);    
  SIGNAL couter : INTEGER range 0 TO 576;
  
BEGIN    
     couter <= 0;
     TempAddr <= "0000000000000000000";
     addr <= "0000000000000000000";
A:    PROCESS(LLC2)      -------------sample,VREF

    variable YUV422 : STD_LOGIC_VECTOR(15 DOWNTO 0);
    
    BEGIN        
   

          IF LLC2'event AND LLC2='1' THEN            
            YUV422 := VPO;    
           IF VREF='1' AND HREF='1' AND TAKE='1' THEN
                   
                data <= YUV422;
                addr <= TempAddr+1;

                nCE <= '0';
                nWE <= '0';
                nOE <= '0';
                nUB <= '0';
                   nLB <= '1';
            ELSE
                nCE <= '1';
                nWE <= '1';
                nOE <= '1';
                nUB <= '1';
                nLB <= '1';
                data <= "0000000000000000";
                        
           END IF;         
         END IF;
    END PROCESS;

B:PROCESS(VREF)
        BEGIN
           IF VREF'event AND VREF='0' THEN
               IF RTS0='1' THEN
                  TempAddr <= "0000000000000000000" ;            
                  line <= '1'    ;                
               END IF;            
            END IF;
 END PROCESS;

END SAA7111A_ac; 


编译的时候出现
Error:Line 35   signal"TempAddr"has multiple sources
Error:Line 19   signal"addr"has multiple sources

望高手指点啊

相关帖子

沙发
yangkui| | 2007-4-10 16:08 | 只看该作者

回复主题:求助---关于CPLD采集图象信号时序的问题

TempAddr的作用是什么 ?

使用特权

评论回复
板凳
阿西西里|  楼主 | 2007-4-10 20:10 | 只看该作者

谢谢

TempAddr的作用做地址线的暂储
要把读得的数据写到SRAM中去
对特定的数据要给地址
通过检测到HREF和VREF和LCC2相关的时序采集VPO口传到CPLD
的数据
再给地址并将得到的数据传输给SRAM

谢谢啊

使用特权

评论回复
地板
laner214| | 2007-4-12 08:36 | 只看该作者

其实很简单

你的这两个信号在并行语句和process中都有定义,编译时就会出现多个源的提示,建议改成在进程里赋初值就对了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

1

粉丝