Question 1 Logisim Part
- Realize Reptile-8 in Logisim.
2.Connect register 0 to 47-segment display unit.
- Write a program which will have a variable named TERMS in its .data area. Your code should evaluate the sum
12+22+32+42+.+ TERMS2
- When this sum is calculated, it must be loaded into register 0 and become visible in 47 segment display. After that, your program must enter into an infinite loop.
- You must complete and use the assembler given in the lecture notes to assemble your code.
- Your system must work with 4 KHz clock of Logisim.
Note: You must do the sum in a loop. You cannot use the established formula for the sum of squares 12+22+32+42+.+n2 = n(n+1)(2n+1)
Question 1 Verilog Part
Realize the above system with Verilog and FPGA. In this case, you must connect 47 segment display to Register 0 physically via GPIO pins of DE0-nano card. Your system must work with 50 MHz system clock. But, for debugging purposes, you may find it more convenient to connect your clock to a pushbutton when developing the system.
Bonus for Question 1
You may write your programs to display your result in hexadecimal. But if you display your result in decimal, you will get an additional 10 points. For this, you must write an additional piece of code (Assembly code not in Verilog) to convert your hexadecimal result into decimal (or binary coded decimal, BCD). You must do this in software and NOT in hardware. Some hints on how this can be done is described in the following link:
https://my.eng.utah.edu/~nmcdonal/Tutorials/BCDTutorial/BCDConversion.html Disregard BCD conversion in hardware part.
Question 2: In this part of the project you will implement Matchsticks-like game in Verilog.
Matchsticks is a puzzle game for two players. Several matchsticks are placed in a line and players take turns removing one, two or three sticks from the table. You cant take any more than three sticks on any one turn, you have to take at least one, and you can never put any back. The object is to force your opponent to take the last stick.
In your Matchstick-like game, you have 100 (decimal) sticks initially. Each player can take at least 1, at most 10 sticks in a turn. Number of total sticks will be seen on 7 segment display (3 units on the right side will be used). On the leftmost 7-segment display unit, player number will be displayed (as 1 or 2). After that, first player starts to take sticks. The first player will enter how many sticks to be taken by using dipswitch placed on breadboard. Whenever you press the pushbutton-1 on FPGA, you will read the number of sticks. If dipswitch value that you read is 0 or more than 10 then – char will be seen on 7-segment display unit(3 units on the right side and leftmost unit will show player number). Then, you will read new value for first player. When accepted stick number is entered, you will subtract it from total and second player continue to play. The game will continue up to any player takes the last stick. The player who takes the last stick lost the game. The winner will be seen on 7-segment display like 1 or 2-. Whenever pushbutton-2 is pressed the game will restart. (At any time pushbutton2 can be pressed)
Near the end of the game, there may be less than 10 sticks, in this case it is not possible to enter any number that is more than remaining sticks, if so – char will be seen on 7-segment display unit and you will read new number.
The number of matchsticks will be seen on 7-segment display as decimal value. Do not use hexadecimal values. (Here you have to convert hexadecimal numbers to BCD in Verilog)
Reviews
There are no reviews yet.