打印

求助,帮看一下程序怎么改,谢谢!

[复制链接]
1381|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nss321|  楼主 | 2007-4-9 20:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST, logic, TE, ic, AN
现想实现如下功能:
输入有两个时钟信号:gate:1Hz方波,clk:40MHz;另一输入是使能信号:en。
输出:对40MHz方波进行分频输出方波:dataout。
要求:在en=1时,dataout=0;在en=0时,等gate的上升沿来时,dataout开始输出方波,以后等每个gate的上升沿对输出复位一次,使输出与gate的上升沿同步。
程序如下:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY KEYSCAN IS
   PORT (
       clk                    : IN std_logic; 
      gate                     : IN std_logic;   
      en                    : IN std_logic; 
      dataout                 : OUT std_logic);      
END KEYSCAN;

ARCHITECTURE arch OF KEYSCAN IS
SIGNAL div_cnt : std_logic_vector(3 downto 0);
SIGNAL dataout_tmp : std_logic;   
SIGNAL start : std_logic; 
BEGIN

dataout<=dataout_tmp;

PROCESS(en,clk,gate)

BEGIN  

  IF (en= '1') THEN
       dataout_tmp<='0';
       div_cnt <= "0000";
       start<='1';
   elsif(en= '0') then
        IF (gate'EVENT AND gate = '1') THEN
          dataout_tmp<='1';
          div_cnt <= "0000";
          start<='0';
        end if;
   end if;
         IF(start<='0' and (clk'EVENT AND clk = '1'))then         
            div_cnt <= div_cnt + 1; 
             IF (div_cnt="0111") THEN  
              dataout_tmp<='0';
             ELSIF (div_cnt="1111") THEN
              dataout_tmp<='1';
             end if;        
        end if;

END PROCESS;
END arch;

提示如下错误:

怎么改正,请指点,谢谢!

Error (10629): VHDL error at KEYSCAN.vhd(42): can't synthesize logic for statement with conditions that test for the edges of multiple clocks

相关帖子

沙发
xilinxer| | 2007-4-11 13:45 | 只看该作者

hehe !

  不要用双时钟!用一个快的时钟,检测慢的gate信号的上升沿!就可以了

使用特权

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

本版积分规则

2

主题

1

帖子

0

粉丝