ALU slice, substract

Pagina: 1
Acties:

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 10-02 14:40

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Hey mensen,
Ik ben bezig met een klein projectje om een ALU op te bouwen uit losse slice's.
Dit uiteraard allemaal softwarematig. Nu heb ik alle functie's voor elkaar behalve de substract. |\
Ik krijg het niet voor elkaar. Kan iemand me hiermee verder helpen? of een voorbeeld geven van een substract?

uitleg ALU slice:
Het is een stukje van de bekende ALU die in processors zit, je hebt 2 bits als input waar je verschillende operatie mee kunt uitvoeren (AND, OR, NAND, ADD, ROR...enz)
Daaruit komt dan 1 bit waarde, met nog wat status bits (Carry, Zero, Negative)

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:04

Creepy

Tactical Espionage Splatterer

En wat krijg je dan precies niet voor elkeer? Wat heb je nu al geprobreerd? Wat lukte daar niet mee? Zie ook Programming Beleid - De Quickstart

Bedoel je dat je het niet voor elkaar krijg om met behulp van AND, OR etc. getallen van elkaar af te trekken?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • djexplo
  • Registratie: Oktober 2000
  • Laatst online: 21-12-2025
Gebruik je het 2 complement systeem?? , als je daar opzoekt vind je het andwoord ...
http://en.wikipedia.org/wiki/Two's_complement

[ Voor 40% gewijzigd door djexplo op 15-08-2006 13:11 ]

'if it looks like a duck, walks like a duck and quacks like a duck it's probably a duck'


  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 10-02 14:40

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Ik schrijf als het ware een eigen alu dus voor de or poort:
ingangen A en B, en uitgangen Q, Carry, Zero, Negative

dus voor een or port krijg je:
If A OR B, Q = 1
else Q = 0

Adden is:
If ( A xor B ) and Carry = 0, Q = 1 Carry = 0
If ( A xor B ) and Carry = 1, Q = 0 Carry = 1
If ( A and B ) and Carry = 0, Q = 0 Carry = 1
If ( A and B ) and Carry = 1, Q = 1 Carry = 1

dus het is de bedoeling om de slice's achter elkaar te kunnen zetten en zo een ALU te maken van
het aantal bits dat maar nodig is.

Zo kan je dus 4 Bit bewerkingen doen maar ook 32 Bits

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Ben even nieuwschierig met welk programma je werkt Armageddon. Zelf heb ik wel eens iets gemaakt met Digital Works, maar die liep niet zo snel meer als je schema te gecompliceerd werd.

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 10-02 14:40

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Ik schrijf het in VHDL, en het is dus puur code werk en niet met schema's ofzo, maar ik kom er maar niet uit. misschien dat ik het in meedere klokpulsen moet gaan uitvoeren....

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
Ik heb helemaal geen verstand van VHDL en de two's complement oplossing was al gegeven, maar aangezien je "substract" schijft ipv het correcte "subtract", heb je het wellicht met Google niet kunnen vinden:

http://www.velocityreview...de-for-2s-complement.html

Omdat je met ALU slices werkt zal het allemaal wel ietsje complexer zijn, maar in principe komt het natuurlijk op hetzelfde neer, toch?
Pagina: 1