Code: `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 16:52:54 03/11/2009 // Design Name: // Module Name: SevenSegmentDisplay // Project Name: // Target Devices: // Tool versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// //---------------------------------------------------------- // DISPLAY MODULE //---------------------------------------------------------- module SevenSegmentDisplay(seg3,seg2,seg1,seg0,clock,annodes1, segments1); input clock; input [3:0] seg3; input [3:0] seg2; input [3:0] seg1; input [3:0] seg0; output reg [3:0] annodes1; output wire [6:0] segments1; reg [1:0] an; reg [3:0] anVal; reg rotate_AN; reg [7:0] timer; wire [3:0] anVals; assign anVals = anVal; //---------------------------------------------------------- // Initilize variables //---------------------------------------------------------- initial begin anVal <= 4'd0; an <= 2'd0; timer <= 8'd0; end //---------------------------------------------------------- // call the decoder for segments //---------------------------------------------------------- segments7 SEG(.fourIN(anVals),.clock(clock),.sevenOUT(segments1)); //---------------------------------------------------------- // rotation delay //---------------------------------------------------------- always @ (posedge clock) begin if (timer == 8'b11111111) begin rotate_AN = (~rotate_AN); timer = 8'd0; end else begin timer = timer + 1; end end //---------------------------------------------------------- // rotate to all segments //---------------------------------------------------------- always @ (posedge rotate_AN) begin if(an == 2'd0) begin anVal = seg0; annodes1 = 4'b1110; if((seg1 >0) || (seg2 > 0) || (seg3 > 0)) begin an = 2'd1; end else begin an = 2'd0; end end else if (an == 2'd1) begin anVal = seg1; annodes1 = 4'b1101; if((seg2 > 0) || (seg3 > 0)) begin an = 2'd2; end else begin an = 2'd0; end end else if (an == 2'd2) begin anVal = seg2; annodes1 = 4'b1011; if(seg3 > 0) begin an = 2'd3; end else begin an = 2'd0; end end else begin anVal = seg3; annodes1 = 4'b0111; an = 2'd0; end end endmodule
|