Starting from:

$30

Verilog-Seven-Segment Display Driver Solved

Part 1 (Rudimentary seven-segment display driver – revisited)
 
You built a rudimentary seven-segment display driver (first_sseg_driver) in lab 3. The driver generates all necessary control signals (i.e. sseg, AN, DP). It displays a 4-bit number (num) on a digit specified by (active_digit). You also tested this driver by connecting it to an external 3-bit signal X then changing that signal to display the sequence (0, 1, 2,…7).

Modify the application (first_sseg_driver_test) so that X is automatically generated by a 3-bit counter. The counter should utilize the 100 MHz clock available on the FPGA board; however, it should change its count at a slower frequency. The count frequency can be specified by a timer, Figure 1 shows a circuit that will allow you to implement this functionality.

• Search for a timer value (interval) that will allow you to see all generated numbers on all seven-segment digits simultaneously.

• Remember the value. You will use it for the complete seven-segment driver in Part 2.

• Use either of the provided timer modules (timer_input or timer_parameter) for the timer

• Use the up/down/load counter provided (udl_counter) for the 3-bit counter.

Figure 1: Timer-controlled Counter 

Part 2 (Complete seven-segment display driver)
 
The technique used in part 1 is called time-multiplexed display. In this part you will use this technique to build a complete seven-segment driver with the following specifications:

• The driver accepts 8 inputs/numbers that can be displayed on each of the available seven-segment digits

•The size of each of the inputs I should be 6-bits.  

o I[0] should be used to specify the status of the decimal point o I[4:1] should be used for the actual HEX number o I[5] should be used to enable/disable the digit  

• The driver utilizes a 100 MHz clock

• The driver should generate all necessary control signals (i.e. sseg, AN, DP)

Figure 2 shows a possible implementation of a complete seven-segment display driver. Use the provided starter code to write a Verilog module (sseg_driver) that describes the whole system.  

Figure 2: Time-multiplexed display driver 

Part 3 (Display the content of an up/down/load counter)
 
Use the driver from part 2 to display the content of an up/down/load counter. The system should have the following specifications:

• Your top file should be called counter_application.v • The counter range should be (at least) between 0 and 255.  

•The counter functionality should be controlled as follows:

o   Up push button to count up o Down push button to count down

o   Middle push button to load a number specified by the switches o CPU reset push button to reset the counter to 0

• You might want to use button.v with the different push buttons

• You might find bin2bcd (from lab 2) useful  

 

More products