User Tools

Site Tools


notes:discrete:fall2022:projects:lmr0

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
notes:discrete:fall2022:projects:lmr0 [2022/09/27 19:59] – [LOGIC GATES] gsubernotes:discrete:fall2022:projects:lmr0 [2022/09/29 03:59] (current) pleblanc
Line 21: Line 21:
  
  
-ROTATE-Is fed an array of bits |1|0|1|0|0|, if we rotate left then we get |0|1|0|0|1|. Will put the bit that falls off in the new bit spot created. **NOTE**: Notice how the only difference between shift and rotate is that with rotate the first value is **saved** and stuck on the end, rather then adding a 0. +ROTATE-Is fed an array of bits |1|0|1|0|0|, if we rotate left then we get |0|1|0|0|1|. Will put the bit that falls off in the new bit spot created. **NOTE**: Notice how the only difference between shift and rotate is that with rotatethe first value is **saved** and stuck on the end, rather then adding a 0 to the end like shift does
  
 {{ :notes:discrete:fall2022:projects:truthtables.jpeg?nolink |}} {{ :notes:discrete:fall2022:projects:truthtables.jpeg?nolink |}}
Line 35: Line 35:
   * Xor   * Xor
   * Xnor   * Xnor
-  * Logical shift (potentially 2 separate operations, shift left and shift right+  * Logical shift (potentially 2 separate operations; Shift Left / Shift Right
-  * Logical rotate+  * Logical rotate (Rotate Left / Rotate Right)
  
 We will be writing different functions that will have this functionality. While it seems simple, we have to start somewhere, and you might find the later parts in shift/rotate a bit harder. Your functions will contain a bunch of if, else if, and else statements. Rest assured that you are doing fine if your code consists of a bunch of these. We will be writing different functions that will have this functionality. While it seems simple, we have to start somewhere, and you might find the later parts in shift/rotate a bit harder. Your functions will contain a bunch of if, else if, and else statements. Rest assured that you are doing fine if your code consists of a bunch of these.
Line 59: Line 59:
 *For anybody interested in editing the wiki page, here is the dokuwiki user guide: https://www.dokuwiki.org/wiki:syntax#basic_text_formatting -Ash *For anybody interested in editing the wiki page, here is the dokuwiki user guide: https://www.dokuwiki.org/wiki:syntax#basic_text_formatting -Ash
 =====PROGRAM===== =====PROGRAM=====
-You are free to use c++ with this project as well. Remember, if you do so, to edit the makefile to be able to compile your c++ code. To do this, edit your makefile and change ''CC = gcc'' to ''CC = g++''.+You are free to use c++ with this project as well. Remember, if you do so, to edit the makefile to be able to compile your c++ code. To do this, edit your makefile and change ''CC = gcc'' to ''CC = g++''. Furthermore, you can make use of gdb if writing this program on a raspberry pi for necessary debugging. To run gdb type gdb file to debug, then type run at the prompt. You can make use of list (lists lines) and break # (to set a breakpoint). You can use display to show the values of variables, and you can make use of N (next), S(step), and C(continue)-resume the execution to breakpoint.
 =====OUTPUT SPECIFICATIONS===== =====OUTPUT SPECIFICATIONS=====
 Output the display of what the functions do by calling them and printing them inside your main function. This can also be used to confirm that all your functions work correctly. For the bit array you can either display both initial and result or find another way to get input into your bit array. Output the display of what the functions do by calling them and printing them inside your main function. This can also be used to confirm that all your functions work correctly. For the bit array you can either display both initial and result or find another way to get input into your bit array.
 =====VERIFICATION===== =====VERIFICATION=====
 There is no make verify with this project. Your verification can be in the form of the main function displaying the truth tables. You can also display the rotate left and right array values after calling your function. The truth tables are located above to refer to. There is no make verify with this project. Your verification can be in the form of the main function displaying the truth tables. You can also display the rotate left and right array values after calling your function. The truth tables are located above to refer to.
 +
 +=====EXAMPLE=====
 +Heres an example output:
 +<cli>
 +USER@lab46:~/src/fall2022/lmr0$ ./lmr0
 +--NOT--
 +--------
 + x | out
 + 0 |  1
 + 1 |  0
 +
 +--AND--
 + x | y | out
 +------------
 + 0 | 0 |  0
 + 0 | 1 |  0
 + 1 | 0 |  0
 + 1 | 1 |  1
 +
 +--OR--
 + x | y | out
 +------------
 + 0 | 0 |  0
 + 0 | 1 |  1
 + 1 | 0 |  1
 + 1 | 1 |  1
 +
 +--NOR--
 + x | y | out
 +------------
 + 0 | 0 |  1
 + 0 | 1 |  0
 + 1 | 0 |  0
 + 1 | 1 |  0
 +
 +--XOR--
 + x | y | out
 +------------
 + 0 | 0 |  0
 + 0 | 1 |  1
 + 1 | 0 |  1
 + 1 | 1 |  0
 +
 +--XNOR--
 + x | y | out
 +------------
 + 0 | 0 |  1
 + 0 | 1 |  0
 + 1 | 0 |  0
 + 1 | 1 |  1
 +
 +--NAND--
 + x | y | out
 +------------
 + 0 | 0 |  1
 + 0 | 1 |  1
 + 1 | 0 |  1
 + 1 | 1 |  0
 +
 +Bitset:                1010
 +Bitset (after LSHIFT): 0100
 +Bitset (after RSHIFT): 0010
 +
 +Bitset:                 10100
 +Bitset (after LROTATE): 01001
 +Bitset (after RROTATE): 10100
 +</cli>
notes/discrete/fall2022/projects/lmr0.1664308744.txt.gz · Last modified: 2022/09/27 19:59 by gsuber