EmbDev.net

Forum: FPGA, VHDL & Verilog RE: I was wondering where I went wrong


von Joseph J. (earthkid123)


Rate this post
useful
not useful
1
module display (clock, AN0, AN1, AN2, AN3, CA, CB, CC, CD, CE, CF, CG, CDP);
2
3
4
//USED FOR SEVEN SEG
5
input clock;
6
7
output AN0, AN1, AN2, AN3, CA, CB, CC, CD, CE, CF, CG, CDP;
8
9
reg [7:0] cathodedata; //cathode data
10
reg [3:0] anodedata; //anode data
11
reg [2:0] digit = 1;
12
reg [6:0] data;
13
reg setdp;
14
reg [19:0] counter = 0;
15
16
assign CA = cathodedata [7];
17
assign CB = cathodedata [6];
18
assign CC = cathodedata [5];
19
assign CD = cathodedata [4];
20
assign CE = cathodedata [3];
21
assign CF = cathodedata [2];
22
assign CG = cathodedata [1];
23
assign CDP = cathodedata [0];
24
assign AN3 = anodedata [3];
25
assign AN2 = anodedata [2];
26
assign AN1 = anodedata [1];
27
assign AN0 = anodedata [0];
28
//USED FOR SEVEN SEG
29
30
    //Multiplexing
31
    //Board Clock: 50MHz
32
    //p = t*f
33
    //t = 16ms
34
    //p = 16ms * 50*10^6 = 800,000 cycles
35
    //200,000 cycles for each digit
36
    //Refreshed every 16ms (~60Hz)
37
38
always@(negedge clock)
39
begin
40
    if (digit == 1)
41
        begin
42
            if (counter == 200000)
43
                begin
44
                    digit = 2;
45
                end
46
            else
47
                begin
48
                counter = counter + 1;
49
                data = 4;
50
                end
51
        end
52
    else if (digit == 2)
53
        begin
54
            if (counter == 400000)
55
                begin
56
                    digit = 3;
57
                end
58
            else
59
                begin
60
                    counter = counter + 1;
61
                    data = 3;
62
                end
63
        end
64
    else if (digit == 3)
65
        begin
66
            if (counter == 600000)
67
                begin
68
                    digit = 4;
69
                end
70
            else
71
                begin
72
                    counter = counter + 1;
73
                    data = 2;
74
                end
75
        end
76
    else if (digit == 4)
77
        begin
78
            if (counter == 800000)
79
                begin
80
                    digit = 1;
81
                    counter = 0;
82
                end 
83
            else
84
                begin
85
                    counter = counter + 1;
86
                    data = 1;
87
                end
88
        end 
89
end
90
91
92
always @ (*)
93
begin
94
95
    case (data)
96
        6'd0: cathodedata = 8'b00000011; //0
97
        6'd1: cathodedata = 8'b10011111; //1
98
        6'd2: cathodedata = 8'b00100101; //2
99
        6'd3: cathodedata = 8'b00001101; //3
100
        6'd4: cathodedata = 8'b10011001; //4
101
        6'd5: cathodedata = 8'b01001001; //5
102
        6'd6: cathodedata = 8'b01000001; //6
103
        6'd7: cathodedata = 8'b00011111; //7
104
        6'd8: cathodedata = 8'b00000001; //8
105
        6'd9: cathodedata = 8'b00001001; //9
106
        6'd10: cathodedata = 8'b00010001; //A
107
        6'd11: cathodedata = 8'b11000001; //B
108
        6'd12: cathodedata = 8'b01100011; //C
109
        6'd13: cathodedata = 8'b10000101; //D
110
        6'd14: cathodedata = 8'b00100001; //E
111
        6'd15: cathodedata = 8'b01110001; //F
112
        default: cathodedata = 8'b11111111; //default all off
113
    endcase
114
115
    if (setdp == 1) //decimal point
116
        cathodedata = cathodedata & 8'hFE;
117
118
    case(digit)
119
        0: anodedata = 4'b1111; //all OFF
120
        4: anodedata = 4'b1110; //AN0
121
        3: anodedata = 4'b1101; //AN1
122
        2: anodedata = 4'b1011; //AN2
123
        1: anodedata = 4'b0111; //AN3
124
        default:
125
        anodedata = 4'b1111; //all OFF
126
    endcase
127
128
end 
129
endmodule

I am using a Nexys 2 digilent board with Xilinix and I just want to turn 
the seven seg display on as a countdown

: Edited by User
von Joseph J. (earthkid123)


Rate this post
useful
not useful
I was wondering in the code what the anode data would be in order to get 
the lights to turn on I am so very confused
1
module seven_seg( intput [3:0]numbers, output reg[6:0] display);
2
3
always @(numbers)
4
  begin  
5
    case(numbers)
6
      4'h0: out1=7'b1000000;  //0111111;
7
      4'h1:  out1=7'b1111001;  //0000110;
8
      4'h2:  out1=7'b0100100;  //1011011;
9
      4'h3: out1=7'b0110000;  //1001111;
10
      4'h4: out1=7'b0011001;  //1100110;
11
      4'h5: out1=7'b0010010;  //1101101;
12
      4'h6: out1=7'b0000010;  //1111101;
13
      4'h7: out1=7'b1111000;  //0000111;
14
      4'h8: out1=7'b0000000;  //1111111;
15
      4'h9: out1=7'b0011000;  //1100111;
16
       default: out1=7'b1111111;//0000000;
17
    endcase
18
  end  
19
endmodule
20
21
22
endmodule
23
// display numbers*/
1
/*
2
module Slowclock(input wire clk, output reg clkslowed
3
    );
4
  integer count=0; 
5
  always @(posedge clk)
6
    begin 
7
      if(count<12500)
8
      begin 
9
        count=count+1;
10
      end 
11
      else 
12
      begin 
13
            clkslowed=!clkslowed;
14
            count=0;
15
          end
16
      end
17
endmodule
18
//slow down clock speed so you can manipulate the seven seg display */
I just dont know why my lights arent going on I have the nexys 2 board I 
need the countdown to work or seven seg display I need for it to 
countdown from 9 to 0

von Lothar M. (Company: Titel) (lkmiller) (Moderator)


Rate this post
useful
not useful
Joseph J. wrote:
> I just want to turn the seven seg display on as a countdown
What did happen instead?
And how did you find that out?

You don't have to start a new THREAD for each post. You can simply 
append new experiences with the edit box at the end oo the thread...

: Edited by Moderator
von Joseph (Guest)


Rate this post
useful
not useful
Lothar M. wrote:
> Joseph J. wrote:
> I just want to turn the seven seg display on as a countdown
>
> What did happen instead?
> And how did you find out

 Nothing happened it didn't turn on at all the seven segment. I found 
because it didn't work I don't know where I put the actual lights part 
referenced as A0 in the next part.

von Joseph Abel (Guest)


Rate this post
useful
not useful
I feel like im messing my user constraints file I am not sure

von Lothar M. (Company: Titel) (lkmiller) (Moderator)


Rate this post
useful
not useful
Joseph Abel wrote:
> I feel like im messing my user constraints file I am not sure
What does your simulation look like?
In a behavioral simulation no UCF file is involved. And therefore its 
the best way to start that way.

> I am not sure
What about trying to switch on just some segments on one of the 
digits. That would be a wholy static design without counters and other 
more tricky things.
So: do some small steps and learn by those small steps...

von Joseph (Guest)


Rate this post
useful
not useful
I simulated it and I still don't see my problem im not sure what the 
error is why my seven segment display isnt working

von Lothar M. (Company: Titel) (lkmiller) (Moderator)


Rate this post
useful
not useful
Joseph wrote:
> I simulated it
With what result?
Does the behavioral simulation work as expected?

Then something with the implementation on the hardware is wrong. And the 
most significant part to interact with the toolchain is the ucf file. 
There the pin constraints are most important...

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.