Devo progettare un ALU con due ingressi A e B a 8 bit e controllare gli ingressi x, ye z che supportano le seguenti operazioni:
x y z | operation
0 0 0 | S = A-B
0 0 1 | S = A+B
0 1 0 | S = A*8
0 1 1 | S = A/8
1 0 0 | S = A NAND B (bitwise)
1 0 1 | S = A XOR B (bitwise)
1 1 0 | s = reverse the bits of A
1 1 1 | S = NOT A (bitwise)
Questo dovrebbe essere fatto con un sommatore a 8 bit e un extender di logica aritmetica. Leggendo il mio libro di testo, vedo che lo scopo di un AL-extender è quello di modificare i bit di input in modo che un sommatore, piuttosto che un sacco di componenti extra, possa essere usato per fare tutto (o almeno questo è quello che ho capito da esso ). Ad esempio, l'AL-extender potrebbe inserire i bit nel complemento a due in modo che l'adder esegua una sottrazione. Allo stesso modo, per le operazioni logiche bit a bit, i bit potrebbero essere modificati in modo appropriato e uno degli input del sommatore potrebbe essere solo zero in modo che il risultato arrivi correttamente.
Ma cosa faccio esattamente riguardo alla moltiplicazione? Il mio libro è molto vago, quindi non sono sicuro se un extender AL mi richiederebbe di fare qualcosa di intelligente per fare in modo che l'adder faccia il lavoro (basta aggiungere 8 volte nel mio caso? ... ah ah), o se io può semplicemente lanciare un moltiplicatore lì dentro. Dovrò leggere sulla divisione, ma scommetto che è simile alla moltiplicazione.
Bene, comunque, la linea di fondo è ancora, che cosa è "permesso" che un extender AL possa / possa avere in esso? Il suo unico scopo è modificare l'input in modo che possa essere inviato a un sommatore?
* EDIT: Beh, è una moltiplicazione / divisione per 8, quindi questo può essere facilmente eseguito spostando a sinistra oa destra per 3. Avrei ancora un AL / extender reale / corretto se aggiungessi alcuni comandi? (Forse sto pensando troppo a un principiante assoluto ...)