Opdracht 4

Optellen van bits

Half-adder

Een half-adder wordt meestal voorgesteld door een blok met twee ingangen (A en B) en twee uitgangen (C en S). Hierbij zijn zowel A als B 1-bit groot. De uitgangen S en C zijn de aritmetische som van de twee ingangen waarbij C (=Carry) de meest significante bit is.

Half-adder

Carry

De carry is de overblevend getal die dus niet in de Som is maar alsnog doorgaat naar de volgende half-adder via de carry output.

Full adder

Een full-adder heeft dezelfde werking als een half-adder maar heeft buiten ingangen A en B ook nog een Carry ingang. De uitgang hangt dus af van de ingangen A, B en Ci(Carry in).

Full-adder

Het voordeel van een full-adder ten opzichte van een half-adder is dat de full-adder een extra ingang heeft die gebruikt wordt als “Carry in”. Dit maakt het mogelijk meerdere full-adders parallel te plaatsen om zo grotere getallen te kunnen optellen.

x-bits teller (x >= 2)

Een x-bit teller is gewoon een aantal full adders in een reeks met elkaar verbonden zodat de carry moet voortplanten door elke full adder voor de toevoeging is voltooid. x-bit tellers vereist de minste hardware van adders, maar ze zijn de langzaamst.

Het volgende diagram toont een vierbit opteller, waarbij de nummers A [3: 0] toevoegt en B [3: 0], en een carryingang samen te produceren S [3: 0] en de carry uitgang.

4-Bit Ripple Adder.svg
Aside

GPIO Cheatsheet

import os
import time
import RPi.GPIO as g

g.setmode(g.BCM)
g.setwarnings(0)

pins = {'LED_': 1, 'LED_': 2}

def setup():
    for key, value in pins.iteritems():
        if key.startswith('LED'):
            g.setup(value, g.OUT)
        elif key.startswith('BUTTON'):
            g.setup(value, g.IN)

setup()
import RPi.GPIO as g              # import RPi.GPIO module  

# choose BOARD or BCM
g.setmode(GPIO.BCM)               # BCM for GPIO numbering
g.setmode(GPIO.BOARD)             # BOARD for P1 pin numbering

# Set up Inputs
g.setup(port_or_pin, GPIO.IN)     # set port/pin as an input
g.setup(port_or_pin, GPIO.IN,  pull_up_down=g.PUD_DOWN) # input with pull-down
g.setup(port_or_pin, GPIO.IN,  pull_up_down=g.PUD_UP)   # input with pull-up 

# Set up Outputs
g.setup(port_or_pin, g.OUT)               # set port/pin as an output
g.setup(port_or_pin, g.OUT, initial=1)    # set initial value option (1 or 0)

# Switch Outputs
g.output(port_or_pin, 1)     # set an output port/pin value to 1/GPIO.HIGH/True
g.output(port_or_pin, 0)     # set an output port/pin value to 0/GPIO.LOW/False  

# Read status of inputs OR outputs
i = g.input(port_or_pin)     # read status of pin/port and assign to variable i
if g.input(port_or_pin):     # use input status directly in program logic

# Clean up on exit
g.cleanup()

# What Raspberry Pi revision are we running?
g.RPI_REVISION #  0 = Compute Module, 1 = Rev 1, 2 = Rev 2, 3 = Model B+

# What version of RPi.GPIO are we running?
g.VERSION

# What Python version are we running?
import sys; sys.version
try:  
    while 1:
        if g.input(25):
            print "Port 25 is 1/GPIO.HIGH/True - button pressed"  
        else:  
            print "Port 25 is 0/GPIO.LOW/False - button not pressed"  
        sleep(.1)         # wait 0.1 seconds  
  
except KeyboardInterrupt:  
    g.cleanup()         # clean up after yourself  

raspberry-pi-gpio-pinouts-1024x703

INFORMATICA: Opdracht 1

Computerarchitectuur

Een computer architectuur bepaalt hoe de computer informatie verwerkt. Het bevat al de specificaties die zeggen wat er gebeurt als je X doet. Het is dus de relatie tussen software en hardware.

Hardware Onderdelen Informatie Verwerkend Systeem

Een computer is meestal gemaakt uit een logica module, en paar ingangen en een paar uitgangen – de GPIO. Je voert informatie in [I], de logica boord gaat het verwerken en terug geven [O].

Inleiding Computerarchitectuur

Een bit kan alleen twee tegenstellende dingen zijn. Het kan zijn dat het een 1 of 0 is, waar of vals, zwart of wit.

De waarheidstabel laat zien wat er met een functie is gebeurt. Het moet al de mogelijkheden laten zien. Als je drie inputs hebt, dan zijn er 2^3=8 mogenlijke uitkomsten.

Voorbeeld met twee inputs en een OR-gate (Of, |):

A B O

0 1 1

1 0 1

0 0 0

1 1 1

Voorbeeld met twee inputs en een AND-gate (En, &):

A B O

0 1 0

1 0 0

0 0 0

1 1 1

Voorbeeld met twee inputs en een XOR-gate (Exclusief of, niet gelijk is, !=):

A B O

0 1 1

1 0 1

0 0 0

1 1 0

Serie parallel schakeling is een combinatie van serie en parallel schakeling:

 

Combitonische schakelingen en bijbehorende formule

Een formule van Y = (A AND B) OR C ziet er zo uit:

De haakjes zijn belangerijk, want Y = A AND B OR C, of Y = A AND (B OR C) hebben totaal verschillende uitkomsten.

De variables zijn altijd in het linker zijde van de tekening en de resultaat in het rechts.

How a Fi module works

Fi is a platform. It could be compared to Android, in the sense that it lets you, as a user, install, manage and run apps flawlessly. What Fi offers for developers (Read: anyone with the ability to read Python) is a simple and easy to understand modular platform. What this means is that you could write a script that makes your microwave warm the milk for your morning coffee, silence its very useful and repetitive beeper, and tell you exactly how many hours of school you’ve missed by troubleshooting a script that warms the milk for your coffee at six o’clock in the morning.

In this post I’ll be explaining how Fi works, and how to write a script for Fi in Python.

Continue reading