Sida 4 av 6

Postat: 25 mars 2008, 22:44:05
av limpan4all
Inte grindad matning, griddad matning.
Man lägger ut matningsspäningarna horisontellt på komponentsidan och vertikalt på lödsidan och i varje korsning ligger en avkopllingskondensator till VCC.

Cadningen av det där är ju gjort på några timmar bara om man har en nodlista klar.

HC har ett mycket bättre fönster inom vilket omslagen ligger, det underlättar avsevärt. Dessutom drar dom i princip ingen ström annat än i omslagen.
LS är hopplöst passé och bör förflyttas till muséavdelningarna (eller sparas som reservdelar). I en icke perfekt layout så har du mycket mindre marginaler med LS än med HC kaplöpningar transienter via matningsspäningrna osv.
Jag har använt båda familjerna för logikkonstruktioner men inte sedan 80 talet har jag rört LS...

Postat: 25 mars 2008, 23:48:40
av The_MorMor
Oki HC låter väldigt mycket bättre.

det gick väldigt lätt att konvertera plotscript filerna till .png i gimp (Att jag inte tänkte på det tidigare). Tyvär så tappade de lite kvalitet och de kan bli lite svåra att läsa på visa ställen.

Aja här kommer iallafall alla koplingschemorna. eller iallafall alla som jag är klar med. Och jag är tvungen att länka bilderna efter som att de är lite större än 700 pixlar :P


CPU
Här är då själva CPU kortet här bor alla register och ALU'sen. För mer information om hur den fungerar i detalj så hänvisar jag till min hemsida där det finns mer ingående information.

MEM
Det här är altså kortet med alla minnen. Här finns både RAMet och ROMet. Såm ni ser så använder jag 6116 chip som RAM men jag funderar på att byta till 7164. Efter som att det är fult möjligt och det inte finns någon som helst anledning till att köra med 6116 egentligen. Dock så är något som förvirrar mig extremt mycket faktumet att SRAM minnena blir billigare desto större de är :p ROM chippen är vanliga 2732 EPROM.

CLK
Detta är kortet där klock pulserna genereras. Jag använder ett 555 chip för att generera klockan. Som det ser ut nu så tar alla instruktioner 4 klock cykler (egentligen 8).
Den kommer att ha tre olika hastigheter den ena är bashastigheten på 1Mhz, en Variabel hastiget från ungefär 20Hz till 100hz samt en manuell klocka.

Dock insåg jag nyss en bugg i systemet som jag har det nu.

Nu fungerar det så här:

Kod: Markera allt

Cycle A = Hämta Opcode och incrementera PC:n
Cycle B = Hämta Argumentet
Cycle D = Utför instruktionen
Cycle E = incrementeraq PC:n
Med den här varianten uppstår det ett problem då jag använder villkors hopp. Den utför nämligen hoppet under cykel D. vilket resulterar i att programmet hamnar i "ofas". Grejjen e den att cpun jobbar med ord som är 2 byte långa. Vilket Innebär att opcodsen alltid kommer ligga på jämna adresser och argumenten alltid kommer att ligga på udda adresser. Men nu när den hoppar så kommer den tillexempel att hoppa från $000A till $0008 och då vara på Cycle D sedan komma till Cycle E och då inkrementera vilket kommer innebära att den kommer börja läsa opcoden från $0009 vilket är en udda adress! och då hamnar programmet i ofas. Jag skulle nog kunna lösa problemet igenom att köra med tre Cycler och incrementra PC:n under cycle B också. Ska se över huruvida de fungerar eller inte.

PC
Ja det här e då program countern. Eller något som är tänkt att fungera som en program counter. DEt här är helt klart den delen av datorn som jag är mist säker på huruvida den kommer att fungera. Den består utav fyra programmerbara 4bitars counters som är kopplade till två 8bitars register innan de kommer ut på Adress bussen. innan dem sitter också fyra stycken 16x4 FIFO register som jag kommer att använda för att spara subrutin adresser och liknande. All skumm logik ni ser är till för att lösa lite problem med subrutin hopp. Problemet är att när den hoppar till en Subrutin sparar den adressen som den hoppade ifrån på stacken och sedan när det kommer ett RTS kommando (return from subroutine) så hoppar den tilbaka till adressen som sparades på stacken tidigare. Här uppstår det dock ett problem med att den kommer att hoppa till baka till samma adress som JSR(Jump to SubRoutine) kommandot låg på och på så vis fastna i en loop. Logiken här är till för att göra så att ett JSR kommando som har ett RTS liggande direkt bakom så ska JSR kommandot bli verkningslöst. Det gör den igenom att sätta en bit till ett när ett RTN kommando kommer. Om den biten är 1 så kan inte ett JSR kommando utföras men JSR kommandot sätter också biten till 0 så att nästa JSR kommando kan utföras utan problem. Här är jag väldigt osäker om det här verkligen kommer att fungera. Den här lösningen kom jag på efter 24 timmar utan snus :p det jag är osäker på är huruvida JSR kommandot kommer hinna resetta biten till 0 och ändå hinna utföra hoppet. Om ni förstår vad jag menar :P

Postat: 25 mars 2008, 23:57:54
av limpan4all
På MEM kortet byt ut till 27256, enklare att få tag på och billigare samt minskar cadjobbet.
Byt ut dina stenålders 6116 mot IDT71256 kostar mellan 10 och 50:-/st beroende på hur många man köper och dom är på 25ns samt lika enkla att interfaca mot, samt mindre (300mil komponent).
Så nu vart minnet bara två kretsar är inte det enklare så säg...

EDIT: Titta den fanns i 20ns på ELFA 73-731-52 för bara 26:-

Postat: 26 mars 2008, 00:20:54
av The_MorMor
Hmmm....det har du rätt i. Jag msåte iof göra om lite med adreserings logiken för att kunna direktadressera ROMet sid chippen och det andra som ska adresseras. Får se över saken i morgon.

Postat: 26 mars 2008, 08:24:23
av limpan4all
Sen för layoutens skull så kan du ju fundera om din valda numrering av alla 373´or är optimal. Såsom du har gjort är det täkt att ledarna kommer uppifrån och försvinner nedåt. Se hur layouten förändras om du istället lägger den som,
D0, D7, D1, D6, D2, D5, D3, D4 då får du raka bussar (373´orna skiter ju i ordningen) samma sak med 71256 där kan du blanda valfritt i pinningen på adress och datasidan för att göra en bättre layout.
Möjligen så är det för mycket med 32k EPROM och 32k SRAM då lägger du bara A14 till en 3 pinnars bygen så får du två bankar vardera om 16k samt ledig addressrymd för I/O.

Postat: 26 mars 2008, 08:42:25
av BJ
Jag kanske har sett fel... Men går inte strömmen till kretsarna genom kondensatorerna nu?
Borde dom inte sitta så här?

Bild

Postat: 26 mars 2008, 08:49:52
av Illuwatar
6116'or eller motsvarande fanns det i mängder hos LabbElektronik. Ingen som tog hand om dessa och kan bjussa på några till detta projekt?

Detta ser riktigt trevligt ut - äntligen något som inte bara går ut på att programmera en PIC/AVR...

Hoppas du får detta att fungera - det är nästan så man vill bygga en själv (har dock så många andra projekt på gång, så det får inte bli fler).

Postat: 26 mars 2008, 10:12:48
av limpan4all
Schemamässigt så ritar man så med kondensatorerna. Även om jag föredrar att lägga VCC och GND vid kretsarna och inte rita ut hela matningsspäningsystemet.
Schemat berättar ju bara hur allt rent logiskt hänger ihop inte hur det kopplas fysiskt.

Postat: 26 mars 2008, 10:40:39
av BJ
Okej. Det har jag aldrig sett förut.
Man gör inte så i Orcad i alla fall.

Postat: 26 mars 2008, 11:10:32
av limpan4all
BJ du har så rätt, jag förstod först inte vad du menade men efter att ha dubbelkollat så har du helt rätt all avkoppling på hans schemor är helt felaktigt gjort, det kommer inte att funka alls.

Men med OrCad skulle det ha funkat trotts det, iochmed dolda matninsspäningar i symbolerna, men avkopplingarna skulle då legat mellan VCC och VCC och då gör dom ingen nytta.
Ditt exempel är rätt.

(även om jag lägger kretsen till VCC och GND respektive kondensatorn till VCC och GND för att inte klottra ner schemat med en massa matningsspänning trådar)

Postat: 26 mars 2008, 12:13:00
av BJ
Okej. Jag tänkte väl det. :)
(Men det där med dolda matningsspänningar... Ja, ja. Det kvittar, för resten.)

Postat: 26 mars 2008, 12:31:22
av The_MorMor
Fan. Va ju ganska puckat att sätta avkoplings kondingarna så som jag gjorde. Det blir till att göra om och göra rätt.

Postat: 26 mars 2008, 13:05:20
av limpan4all
Jag vet inte hur det är nu med OrCad men från de gamla DOS versionerna till de tidiga Windowsversionerna så kunde man i sina symboler skapa pinaar som fick type POWER då syns dom inte och namnet som man gav pinnen kopplades dolt ihop med något nät som hette likadant (bugge som var är att det skapas en short/short pinne som inte syns om det skulle råka ligga en kopling i just den bunkten (junction point) så kopplas den ihop med POWER nätet utan att det direkt syns på schemat. Detta är skitjobbigt första gången man drabbas av det, innan man vet och förstår felkällan...

Postat: 26 mars 2008, 13:31:57
av BJ
Ja, gömda (korta) ben och "power" (eller vad det heter) finns i alla fall i version 9,1.
Så om man döper matningsspänningen till power så kopplas dom dit av sig själv, menar du?
Jag har bara haft nät med andra namn, så jag visste inte att det gick att göra så.
(Inte för att jag vill göra det, men det är ju bra att veta.)

Jag försöker att ha ledningar rakt in till alla komponenter när jag ritar, för då följer dom med (blir längre eller kortare)
om man flyttar en komponent.
Om man har en kondensator som sitter direkt på en krets utan ledning mellan, och drar iväg kretsen, så blir det tomt mellan dom.
Och så inga ledningar alldeles intill en krets.
Då händer inte det där med gömda punker lika lätt (Jo, ibland... men då är det ganska lätt att se det.)
Lite dålig förklaring, men du kanske förstår vad jag menar.

The_MorMor: Lite fel kan ju alla göra. ;)

Postat: 26 mars 2008, 13:43:37
av limpan4all
I en typisk TTL symbol så namnger du pinne 14 till VCC och lägger den som typ POWER. Sedan så lägger du ett nät som heter VCC med Place Power och väljer rätt namn och valfri symbol, och så är dom ihopkopplade utan att det syns någonstans (annat än i nätlistan förstås).
Du kan också bara dra korta tråda sen lägga dit en label så kopplas det ihop vid nätlistegenereringen.
MEN - POWER pinnar är globala medans Lablar är lokala på varje sheet (oftast, det finns undantag)...