LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY model_2 IS
PORT(
iSel , iClock , iClock_1 : IN STD_LOGIC ;
iData1 , iData2 : IN STD_LOGIC ;
oData : OUT STD_LOGIC_VECTOR( 4 DOWNTO 0)
);
END model_2;
ARCHITECTURE arc_model_2 OF model_2 IS
SIGNAL d_one , d_two , d_reg : STD_LOGIC ;
SIGNAL d0 , d1 , d2 , d3 : STD_LOGIC ;
BEGIN
p1: PROCESS( iClock , iClock_1 )
BEGIN
IF( iSel = '0' ) THEN
IF( iClock'EVENT and iClock = '1' )THEN
d_one <= iData1 ; d_two <= iData2 ;
d0 <= d_one ; d1 <= d_two ;
END IF ;
IF( iClock_1'EVENT and iClock_1 = '1' )THEN
d_one <= iData1 ; d_two <= iData2 ;
d2 <= d_one ; d3 <= d_two ;
END IF ;
END IF ;
END PROCESS p1 ;
d_reg <= '0' ;
oData <= d_reg & d3 & d2 & d1 & d0 ;
END arc_model_2 ;
在这个程序中,我需要实现的功能是:
首先检测iClock上升沿,上升沿出现时将iData1和iData2的数据分别存入寄存器d0和d1,
然后再检测iClock_1上升沿,将iData1和iData2的数据分别存入寄存器d2和d3
最后,再将d_reg d3 d2 d1 d0按顺序组成一个并行数据由oData输出。
补充一点,iClock_1是iClock的二分频
我想问的是,VHDL在同一个进程中是不是不允许对两个时钟沿进行检测?如果要实现以上的功能应该怎么样进行修改呢?谢谢大虾了~
更多回帖