Designa en 4-bitars Adder i Quartus II (6 / 7 steg)
Steg 6: Föra den tillsammans
Alla mindre bitar av 4 bitar adder har skapats. De vi har kvar är att lägga till komponenter i de nödvändiga ställen och sedan ansluta dem tillsammans (förvirrande delen).
Hittills har vi clock_generator och state_machine i våra 4BitAdder. (clock_generator bör vara någonstans till vänster om våra tillståndsdator.)
1) Lägg till 8 16-input MUX (161MUX).
en) expandera de andra mapp under vårt standardbibliotek.
b) expandera maxplus2.
c) lägga till 16-indata multiplexer.
2) ordna de 8 MUXs i två rader, fyra långa. De bör vara till höger om state_machine (och därför clock_generator). Det är lättare om de är något lägre än state_machine.
en) MUXs måste roteras så att den en utgången är vänd nedåt.
b) lämna 1 kvarter utrymme mellan varje MUX horisontellt, och 3-4 block vertikalt mellan de två raderna.
Varje uppsättning 4 MUXs ta i ingångar. Den signal som vi skickar till val av insatsvaror beslutar vilken signal visas på utdata.
3) etikett övre uppsättningen av MUXs RegA3-RegA0, från vänster till höger, som anger bit 3-bit 0 för antal A.
4) etikett botten uppsättningen av MUXs RegB3-RegB0.
Se bild
5) lägga till 8 D flip flops.
en) en flip flops bör gå under varje MUX.
D flip flops hjälp att sätta MUX på klockan. Oavsett signal väljs av MUX skulle skickas på väg, men genom att lägga den flip floppen, det kommer endast att skickas när klocksignalen gäller.
6) lägga till 4 7_segment_display.
en) alla fyra kommer att vara till höger om MUX, med ca 3 block av utrymmet mellan dem och MUX.
b) två av fyrana kommer att ligga över MUXs, men fortfarande är till höger om dem.
c) en av 7_segment_displays kommer att gå mellan de två uppsättningarna av MUXs.
d) den sista som kommer att gå under den nedre uppsättningen MUXs.
7_segment_displays kommer att hjälpa oss att se vad som sker i vår krets. Man låter oss att se vilka siffror vi kommer att lägga in i kretsen. En annan berättar där tillståndsdatorn är, med endast 3 D flip flop, choice språng mellan 0 och 7. De sista två skärmarna av denna grupp är bara att se kretsen fungerar korrekt. MUXs och D flip flops act som Växelreglage; med den korrekta, kommer signalen från en MUX att skickas till en på sin rätt. Detta skiftar också rätt-mest lite in i adder senare. 7_segment_displays kommer att berätta vad som kommer ur varje grupp av MUXs; Detta kan användas för att felsöka eventuella problem.
e) märka den övre 7_segment_display som nummer.
f) märka 2. displayen som tillståndsdator.
g) etikett 3. displayen som RegA.
h) etikett 4. displayen som RegB.
Se bild
7) lägga till två mer 16-input MUXs, en ovanför annat, med den översta utgång vänd nedåt, och den nedre utgång uppåt.
en) dessa MUXs bör till höger och ungefär där emellan den andra uppsättningen av MUXs. (Dessa MUX till höger om 7_segment displayen för övre fastställs också av MUXs.
b) etikett de översta MUX AddBitA.
c) etikett botten MUX AddBitB.
8) Lägg till i full_adder till höger om de två AddBit MUXs, mellan dem vertikalt.
9) lägga till en D flip flop till höger om full_adder, placera den ca halvt kvarter lägre.
10) lägga till 4 fler 16-input MUXs till höger om T flip flop. Lämna 1 kvarter utrymme mellan varje komponent.
en) etikett MUXs RegC3-RegC0, från vänster till höger.
11) lägga till 4 D flip flops nedan varje MUX.
12) lägga till en 7_segment_display till höger om höger vänd floppen.
Se 2 bilder
13) Anslut utgång Q1 av state_machine till SEL1 av varje MUX.
14) Anslut utgång Q1 state_machine till ingången Z på den 7_segment_display märkt tillståndsdator.
15) Anslut utgång Q2 state_machine till SEL2 av varje MUX.
16) Anslut utgång Q2 state_machine till ingången Y på 7_segment_display märkt tillståndsdator.
17) Anslut utgång Q3 av state_machine till SEL3 av varje MUX.
18) Anslut utgång Q3 av state_machine till ingång X av 7_segment_display märkt tillståndsdator.
19) Anslut utgången av varje MUX D ingång D flip flop inunder.
20) de MUXs heter AddBitA och AddBitB bör ha sina utgångar anslutna till X och Y av full_adder (en utgång till en ingång).
21) ansluta utgången Q D flip flop nedan RegA3 MUX ingångar IN0, IN2-IN5, IN14 och IN15 av RegA3 MUX.
22) också anslutning här samma Q utdata till IN6-IN13 på RegA2 MUX.
23) upprepa steg 16 och 17 för D flip flop under varje RegA2-RegA0.
en) utgången Q D flip flop för RegA2-RegA0 ansluter alltid till samma ingångar av registret ovanför och till höger om det, precis som RegA3.
b) för steg 17 D flip flop nedan RegA0 ansluter Q till ingångar IN6-IN13 av RegA3.
Se bild
24) ansluta utgången Q D flip flop under RegA3 att mata in W av RegA 7_segment_decoder.
25) ansluta utgången Q D flip flop under RegA2 till ingång X av RegA.
26) ansluta utgången Q D flip flop under RegA1 att mata in Y av RegA.
27) ansluta utgången Q D flip flop under RegA0 att mata in Z av RegA.
28) ansluta utgången Q D flip flop nedan RegB3 MUX ingångar IN0-IN2, IN4, IN5, IN14 och IN15 av RegB3 MUX.
29) anslutning samma produktion Q till IN6-IN13 på RegB2 MUX.
30) upprepa steg 23 och 24 för D flip flop nedan RegB2-RegB0.
en) utgången Q D flip flop för RegB2-RegB0 ansluter alltid till samma ingångar av registret ovanför och till höger om det, precis som RegB3.
b) för 24 steg D flip flop nedan RegB0 ansluter Q till ingångar IN6-IN13 av RegB3.
Se bild
31) Anslut utgång Q D flip flop under RegB3 att mata in W RegB 7_segment_decoder.
32) Anslut utgång Q D flip flop under RegB2 till ingång X av RegB.
33) Anslut utgång Q D flip flop under RegB1 att mata in Y av RegB.
34) Anslut utgång Q D flip flop under RegB0 att mata in Z av RegB.
35) ansluta utgången Q D flip flop nedan RegC3 MUX ingångar IN0-IN4 IN14 och IN15 av RegC3 MUX.
36) anslutning samma Q produktion D flip flop till IN6-IN13 på RegC2.
37) upprepa steg 30 och 31 för varje D flip flop nedan RegC2-RegC0.
en) utgången Q D flip flop för RegC2-RegC0 ansluter alltid till samma ingångar av registret ovanför och till höger om det, precis som RegC3.
b) utgången Q D flip flop för RegC0 ansluta inte till någon ingångar för RegC3.
Se bild
38) Anslut utgång Q D flip flop under RegC3 att mata in W RegC 7_segment_Decoder.
39) Anslut utgång Q D flip flop under RegC2 till ingång X av RegC.
40) Anslut utgång Q D flip flop under RegC1 att mata in Y av RegC.
41) Anslut utgång Q D flip flop under RegC0 att mata in Z av RegC.
42) Anslut utgången Q d flip flop under RegA0 till ingång IN6-IN15 av AddBitA MUX.
43) Anslut utgången Q d flip flop under RegB0 till ingång IN6-IN15 av AddBitB MUX.
Obs: Resten av dessa ingångar och SEL0 för båda dessa MUXs kommer att lämnas osammanhängande. Detta kan orsaka problem i vissa kretsar, men inte inte för denna. Tänk på att om det orsakar problem, ansluter indata till VCC eller GND kommer ofta att åtgärda problemet. VCC som 1, GND som 0.
Se bild
44) Anslut utgången summan av full_adder till ingång IN6-IN13 på RegC3 MUX.
45) Anslut utgång Co av full_adder D ingång D flip flop till höger.
46) Anslut utgången Q D flip flop till ingången Ci för full_adder.
Se bild
47) lägga till 3 nåla fast ingång till vänster om alla komponenter, en till vänster om clock_generator, och de andra två till vänster om state_machine.
48) etikett ingång till vänster om clock_generator klocka.
49) Anslut den till ingången på clock_generator.
50) Anslut utgången clock_generator klocka ingången på varje D flip flop.
51) ansluta samma produktion till klocka-ingången på state_machine.
52) etikett en ingångsstift till vänster om state_machine kontroll.
53) koppla kontroll ingångsetikett kontroll av state_machine.
54) etikett det tredje ingångsstiftet Clear.
55) ansluta klart tydligt ingången på state_machine.
56) Anslut det samma tydliga ingångsstiftet att CLRN för varje D flip flop.
57) lägga till 6 ingångar pins ovan RegA3 MUX.
58) etikett de första ingångsstiftet LoadA.
59) ansluta LoadA till SEL0 av RegA3-RegA0.
60) etikett de andra ingångsstiftet Bit3.
61) Anslut Bit3 till IN1 av RegA3, IN3 av RegB3, IN5 av RegC3 och input W av 7_segment_display märkt nummer.
62) etikett det tredje ingångsstiftet Bit2.
63) Anslut Bit2 till IN1 av RegA2, IN3 av RegB2, IN5 av RegC2 och ingång X i 7_segment_display märkt nummer.
64) etikett det fjärde ingångsstiftet Bit1.
65) Anslut Bit 1 till IN1 av RegA1, IN3 av RegB1, IN5 av RegC1 och input Y av 7_segment_display märkt nummer.
66) etikett det femte ingångsstiftet Bit0.
67) Anslut Bit0 till IN1 av RegA0, IN3 av RegB0, IN5 av RegC0 och inkommande Z för 7_segment_display märkt nummer.
68) etikett det sjätte ingångsstiftet Gn.
69) ansluta Gn till GN-ingången på varje MUX.
70) Lägg till en ingångsstift till vänster om RegB3 MUX.
71) etikett LoadB.
72) ansluta LoadB till SEL0 av RegB3-RegB0.
73) Lägg till en ingångsstift till vänster om RegC3 MUX.
74) etikett pin LoadC.
75) ansluta LoadC till SEL0 av RegC3-RegC0.
76) lägga till 7 utgångsstift till höger om 7_segment_display märkt nummer.
77) etikett utgångarna InputA-InputG.
78) Anslut utgången A-G av nummer till motsvarande utgång stift.
79) lägga till 7 utgångsstift till höger om 7_segment_display tillståndsdator.
80) etikett utgångarna StateMachineA-StateMachineG.
81) Anslut utgångarna A-G för tillståndsdator till motsvarande utgång stift.
Se bild
82) lägga till 7 utgångsstift till höger om 7_segment_display RegA.
83) etikett utgångarna RegAA-RegAG.
84) Anslut A-G-utgångar för RegA deras motsvarande produktionen stift.
85) lägga till 7 utgångsstift till höger om 7_segment_display RegB.
86) etikett utgångarna RegBA-RegBG.
87) Anslut A-G-utgångar för RegB deras motsvarande produktionen stift.
88) lägga till 7 utgångsstift till höger om 7_segment_display RegC.
89) etikett utgångarna SumA-SumG.
90) Anslut A-G-utgångar för RegC deras motsvarande produktionen stift.
Se bild
91) spara filen.
92) Klicka på bearbetning.
93) gå till starta kompileringen (det tar några minuter).
Programmet kan komma med några varningar, men vår krets bör fortfarande ladda till FPGA korrekt.
Se bild