Top Entity--D flip flop and Counter

OP #2997901
Rate this post
• ▲ useful
▼ not useful
Hi,

I am writing entity which include both d flip flop and counter.
The output of d flip flop is qout and nqout. The qout is given as input 
to counter. Now while writing top entity I am considering qout and nqout 
as temporary signal. And its working fine. But I want to modify it such 
that these signal becomes my port and I can use it to excite some other 
circuit.
My code is as below.
1
---DFF
2

3
library ieee;
4
use ieee.std_logic_1164.all;
5

6
entity dff is
7
port ( din:     in std_logic;
8
       dclk:     in std_logic;
9
       qout:    out std_logic;
10
       nqout:   out std_logic
11
     );
12

13
end dff;
14

15
architecture behavioral of dff is
16

17
begin
18
        process(din,dclk)
19
        begin
20
          --- clock rising edge
21
        if(dclk='1' and dclk'event) then
22
                qout <= din;
23
                nqout <= not din;
24
        end if;
25
        end process;
26
end behavioral;
27

28

29
--UpdownCounter
30

31
library ieee;
32
use ieee.std_logic_1164.all;
33
use ieee.numeric_std.all;
34

35
entity counter is
36
generic(n: natural :=8);
37
port ( asynch_reset: in std_logic;
38
       qout: in std_logic;
39
       dclk: in std_logic;
40
       cnout: out std_logic_vector(n-1 downto 0)
41
     );
42
end counter;
43

44
architecture behavioral of counter is
45

46
signal Q: unsigned(n-1 downto 0);
47
begin
48

49
    process(asynch_reset, dclk,qout)
50
        begin
51

52
          if(asynch_reset = '1') then
53
                Q<="00000000";
54
          elsif (dclk'event and dclk = '1') then
55
                if (qout='1') then
56
                        Q<= Q + 1;
57
                else
58
                        Q<= Q - 1;
59
                end if;
60
          end if;
61
    end process;
62

63
    cnout<=     std_logic_vector(Q);
64
end behavioral;
65

66
----Top Entity
67
library ieee ;
68
use ieee.std_logic_1164.all;
69

70
entity top is
71
generic(n: natural :=8);
72
port(  din: in std_logic;
73
       asynch_reset: in std_logic;  
74
       dclk: in std_logic;
75
       cnout: out std_logic_vector(n-1 downto 0)
76
     );
77

78
end top;
79

80
architecture structure of top is
81

82
component dff is
83
port( din: in std_logic;
84
      dclk: in std_logic;
85
      qout: out std_logic;
86
      nqout: out std_logic
87
    );
88
end component;
89

90
component counter is
91
port( asynch_reset: in std_logic;
92
      qout: in std_logic;
93
      dclk:in std_logic;
94
      cnout:out std_logic_vector(n-1 downto 0)
95
    );
96
end component;
97

98
signal temp1,temp2:std_logic;
99

100
begin
101

102
flip_flop:dff
103
    PORT MAP(din,dclk,temp1,temp2);
104

105
updown_counter:counter
106
         PORT MAP(asynch_reset,temp1,dclk,cnout);
107
end structure;

Reply

Note: the original post is older than 6 months. Please don't ask any new questions in this thread, but start a new one.

Formatting
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]
  • [[Title]] – link to an article
  • Link to another post: right-click its post ID (#8078628), copy the address, paste it into the text

More about formatting

Post long source code as an attachment, not in the text.

Already registered? Log in

Not shown to anyone. We send you a link; your post appears once you confirm it there.

By submitting you create a free account and accept the terms of use.