¡¡¡¡
¡¡¡¡Àý£º
¡¡¡¡entity Cunter is
¡¡¡¡¡¡¡¡port (CLK, Carry: Bit; Dout: buffer Bit_Vector(7 downto 0));
¡¡¡¡end Cunter;


¡¡¡¡architecture Counter of Counter is
¡¡¡¡¡¡¡¡component TFF
¡¡¡¡¡¡¡¡¡¡¡¡port (CLK, T:Bit; Q: buffer Bit);
¡¡¡¡¡¡¡¡end component;
¡¡¡¡¡¡¡¡component And2
¡¡¡¡¡¡¡¡¡¡¡¡port(I1, I2: Bit; O1: out Bit);
¡¡¡¡¡¡¡¡end component;
¡¡¡¡¡¡¡¡signal S: Bit_Vector(7 downto 0);
¡¡¡¡¡¡¡¡signal Tied_High: Bit:='1';
¡¡¡¡begin
¡¡¡¡¡¡G1: for I in 7 downto 0 generate
¡¡¡¡¡¡¡¡G2: if I=7 generate
¡¡¡¡¡¡¡¡¡¡¡¡TFF_7: TFF
¡¡¡¡¡¡¡¡¡¡¡¡¡¡port map (CLK, S(I-1), Dout(I));
¡¡¡¡¡¡¡¡end generate;
¡¡¡¡¡¡¡¡¡¡
£­£­µÈ¼ÛÓÚ£ºTFF_7: TFF port map (CLK, S(6), Dout(7));
¡¡¡¡¡¡¡¡G3: if I=0 generate
¡¡¡¡¡¡¡¡¡¡¡¡TFF_0: TFF
¡¡¡¡¡¡¡¡¡¡¡¡¡¡port map (CLK, Tied_High, Dout(I));
¡¡¡¡¡¡¡¡¡¡¡¡S(I) <= Dout(I);
¡¡¡¡¡¡¡¡end generate;
¡¡¡¡¡¡¡¡¡¡£­£­µÈ¼ÛÓÚ£º

¡¡¡¡¡¡¡¡¡¡¡¡¡¡
£­£­ TFF_0: TFF port map (CLK, Tied_High, Dout(0));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ S(0) <= Dout(0);
¡¡¡¡¡¡¡¡G4: if I>0 and I<7 generate £­£­ I = 1£¬2£¬3£¬4£¬5£¬6
¡¡¡¡¡¡¡¡¡¡¡¡And_1: And2
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡port map (S(I-1), Dout(I), S(I));
¡¡¡¡¡¡¡¡¡¡¡¡TFF_1: TFF
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡port map (CLK, S(I-1), Dout(I));
¡¡¡¡¡¡¡¡¡¡¡¡S(I) <= Dout(I);
¡¡¡¡¡¡¡¡end generate;
¡¡¡¡¡¡¡¡
£­£­ µÈ¼ÛÓÚ£º
¡¡¡¡¡¡¡¡¡¡¡¡¡¡
£­£­ And_1: And2 port map (S(0), Dout(1), S(1));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ And_2: And2 port map (S(1), Dout(2), S(2));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ And_3: And2 port map (S(2), Dout(3), S(3));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ And_4: And2 port map (S(3), Dout(4), S(4));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ And_5: And2 port map (S(4), Dout(5), S(5));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ And_6: And2 port map (S(5), Dout(6), S(6));

¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ TFF_1: TFF port map (CLK, S(0), Dout(1));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ TFF_2: TFF port map (CLK, S(1), Dout(2));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ TFF_3: TFF port map (CLK, S(2), Dout(3));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ TFF_4: TFF port map (CLK, S(3), Dout(4));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ TFF_5: TFF port map (CLK, S(4), Dout(5));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ TFF_6: TFF port map (CLK, S(5), Dout(6));

¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ S(1) <= Dout(1);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ S(2) <= Dout(2);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ S(3) <= Dout(3);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ S(4) <= Dout(4);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ S(5) <= Dout(5);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡£­£­ S(6) <= Dout(6);
¡¡¡¡¡¡¡¡end generate;
¡¡¡¡end Counter;