Სარჩევი:

შექმენით კომპიუტერი/ ელექტრონიკის ძირითადი გაგება: 9 ნაბიჯი (სურათებით)
შექმენით კომპიუტერი/ ელექტრონიკის ძირითადი გაგება: 9 ნაბიჯი (სურათებით)

ვიდეო: შექმენით კომპიუტერი/ ელექტრონიკის ძირითადი გაგება: 9 ნაბიჯი (სურათებით)

ვიდეო: შექმენით კომპიუტერი/ ელექტრონიკის ძირითადი გაგება: 9 ნაბიჯი (სურათებით)
ვიდეო: ეკჰარტ ტოლე - "აწმყოს ძალა" - აუდიო წიგნი - Audible Read Along 2024, ივლისი
Anonim
ააშენეთ კომპიუტერი/ ელექტრონიკის ძირითადი გაგება
ააშენეთ კომპიუტერი/ ელექტრონიკის ძირითადი გაგება

გსურდათ ოდესმე თავი მოჩვენოთ, რომ ნამდვილად ჭკვიანი ხართ და ნულიდან ააშენოთ საკუთარი კომპიუტერი? არაფერი იცით იმაზე, თუ რა არის საჭირო მინიმალური კომპიუტერის შესაქმნელად? ისე, ადვილია, თუ საკმარისად იცი ელექტრონიკა, რომ IC– ები სწორად დააგდო. ეს გასაგები იქნება ვივარაუდოთ, რომ თქვენ ხართ კარგი იმ ნაწილში, პლუს რამდენიმე სხვა რამ. და თუ არა, ის მაინც არ უნდა იყოს ძალიან რთული, რომ იცოდე თუ იცი, როგორ კეთდება პურის დაფა/პროტოტიპი. ამ ინსტრუქციის მიზანია მოგაწოდოთ სამუშაო "კომპიუტერი" ისე, რომ არ იცოდეთ როგორ მუშაობს ისინი. მე გავაშუქებ გაყვანილობას და პროგრამირების საფუძვლებს, ასევე მოგაწვდით ძალიან მოკლე პროგრამას. მოდით დავიწყოთ.

ნაბიჯი 1: ნაწილები და მასალები

ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და ნივთები
ნაწილები და ნივთები

"კომპიუტერი" მოითხოვს: ენერგიას, შეყვანას, დამუშავებას, მეხსიერებას და გამომუშავებას. ტექნიკურად ჩვენ გვექნება ეს ყველაფერი. მე დავფარავ ამ ნივთებს თანმიმდევრობით.

სიმძლავრისთვის დაგჭირდებათ 5 ვოლტიანი წყარო (აქ აღწერილია როგორც 5 ვ) წყარო. მიზანშეწონილია ეს იყოს რეგულირებადი წყარო, რათა შემთხვევით არ შეწვათ ნაწილები თქვენს წრეში. ჩვენი შეყვანა იქნება ღილაკები. დამუშავება თავისთავად ახსნილია; ჩვენ ვიყენებთ პროცესორს. მეხსიერება შედგება მხოლოდ ROM– ისგან. პროცესორის შიდა ზოგადი დანიშნულების რეგისტრები საკმარისი იქნება RAM- ის გამოსაყენებლად. გამომავალი იქნება LED- ები.

1 LM7805C - 5V რეგულატორი

1 ZYLOG Z80 - პროცესორი

1 AT28C64B - EEPROM

1 74LS273 - ოქტალური D ფლიპ -ფლოპი

1 74HC374E - ოქტალური D Flip -Flop

3 CD4001BE - Quad NOR Gate

1 NE555 - საათის გენერატორი

2 1K Ohm რეზისტორი

1 10K Ohm რეზისტორი

1 10K Ohm Resistor ქსელი; 8 ავტობუსი ან 8 დამატებითი 10K რეზისტორი

1 1uF კონდენსატორი

1 100uF კონდენსატორი

1 ღილაკი

1 3x4 ღილაკის მატრიცა ან 8 დამატებითი ღილაკი

8 LED - ფერის არჩევანს მნიშვნელობა არ აქვს

8 330 Ohm Resistors ან Resistor ქსელი

1 მართლაც დიდი პურის დაფა ან მრავალი პატარა

ბევრი და ბევრი მავთული

ჩემს სქემატურში მაქვს SRAM ჯოხი დაყენებული. თქვენ არც კი გჭირდებათ ამაზე ფიქრი. მე მხოლოდ სქემაში დავამატე, რომ ზუსტად ასახავდეს ჩემს რეალურ სქემას და დავამატე იგი სქემას მომავალი გამოყენებისთვის. ასევე სქემატურს დაემატა quad OR კარიბჭე (74LS36). ორი გამოუყენებელი კარიბჭის შესასვლელი უკავშირდება VCC- ს და მათი შედეგები დარჩა მცურავი (არ არის დახატული). ასევე არ არის დახატული და არც ზემოთ ჩამოთვლილი არის ორი კონდენსატორი დენის წრეზე.

მე ვკვებავ რეგულირებით 12V 5V რეგულატორში, რათა გამოვიკვებო მთელი დაფა. საკმაოდ თბება, ამიტომ გავაგდე გამაგრილებელი გამაგრილებელი. თუ თქვენ იყენებთ 12 ვ -ზე ნაკლებს მარეგულირებლის შესანახი (გამოიყენეთ მინიმუმ 7 ვ), ის უნდა მუშაობდეს უფრო მაგრად.

Z80 არის ადგილი, სადაც ხდება მაგია. იგი იღებს მითითებებს ROM- ში შენახულ და ასრულებს მათ. EEPROM ინახავს ჩვენს პროგრამას პროცესორის შესასრულებლად.

რვაფუნქციური ფლიპ-ფლოპი, რომელიც არის ჩვენი გამომავალი მოწყობილობა, რომელიც მონაცემების ავტობუსზე მონაცემებს ათავსებს საკუთარ გამომავალზე. ეს საშუალებას გვაძლევს შევცვალოთ ის, რაც ავტობუსშია, რაც ძალიან მნიშვნელოვანი ნაბიჯია, რამდენჯერმე შესრულებულია ინსტრუქციის მიხედვით, მომხმარებლის/მაყურებლის ხილვის შეცვლის გარეშე. ფლიპ-ფლოპს არ შეუძლია მართოს დენი, რომელიც საჭიროა გამომავალი LED- ების გასანათებლად, ამიტომ ისინი იკვებებიან ორ ოთხკუთხედის კარიბჭის ორ ჩიპში, რომლებიც მოქმედებენ ბუფერული მონაცემების 8 ხაზზე LED- ების მართვისთვის. ვინაიდან კარიბჭეების გამოსასვლელი უკუღმაა, ჩვენ ასევე უნდა შევაერთოთ შუქდიოდური შუქდიოდური შუქდიოდური შუქდიოდური შუქდიოდური ნათურები, მაგრამ ჩვენ ამას მივალთ, როდესაც მივალთ. მეორე ჩიპი გამოიყენება ლოგიკური დეკოდირებისთვის, მაგრამ მხოლოდ სამი კარიბჭეა გამოყენებული.

ოქტალური ფლიპ-ფლოპი, რომელიც გამოიყენება შესასვლელად, არსებითად ერთი და იგივეა. გამომავალი ფლიპ-ფლოპები ინარჩუნებენ გამომავალს ან მაღალს ან დაბალს, ამიტომ არ შეიძლება გამოყენებულ იქნას ავტობუსის მართვისას; ის შეინახავს მონაცემებს ავტობუსში. შეყვანისთვის გამოყენებული ფლიპ-ფლოპი ცვლის /RESET pin- ს /EN- ით, რომელიც მეტნაკლებად წყვეტს ჩიპის (და მისგან) გამოსავალს, ასე რომ არ შეინახავს მონაცემებს (სამი მდგომარეობის შედეგები).

ნაბიჯი 2: დენის, საათის და გადატვირთვის სქემების გაყვანილობა

დენის, საათის და გადატვირთვის სქემების გაყვანილობა
დენის, საათის და გადატვირთვის სქემების გაყვანილობა
დენის, საათის და გადატვირთვის სქემების გაყვანილობა
დენის, საათის და გადატვირთვის სქემების გაყვანილობა
დენის, საათის და გადატვირთვის სქემების გაყვანილობა
დენის, საათის და გადატვირთვის სქემების გაყვანილობა

შენიშვნა: ყველა ნაწილისთვის, პირველ რიგში შეაერთეთ დენის რელსები. ყველაფრისგან, რაც უნდა დაივიწყოს მავთული, ჩიპები გაცილებით ნაკლებად გადარჩება დავიწყებულ დენის კავშირებზე.

დენის წრე არის ყველაზე მარტივი წრე მავთულისთვის, რასაც მოყვება გადატვირთვისა და საათის სქემები, შესაბამისად. სურათზე, 12V შეყვანა არის დენის ზოლზე, უკიდურეს მარჯვნივ. ყავისფერი მავთული, რომელიც იმალება მის ქვეშ ყვითელს, კვებავს 12V მარეგულირებელს. მარეგულირებლის გამომავალი კვებავს ყველა სხვა დენის ზოლს პურის დაფაზე და ყველა ელექტროსადგურს აქვს საერთო საფუძველი, რადგან ასე მუშაობს ელექტრონიკა.

პროცესორს მუშაობისათვის სჭირდება საათის ჩართვა. ამის გარეშე, ის უბრალოდ იჯდება საწყის მდგომარეობაში და არაფერს გააკეთებს. საათი ამუშავებს პროცესორების შიდა ცვლის რეგისტრატორებს, რათა მას შეეძლოს სიგნალების წარმოქმნა საქმის შესასრულებლად. საათის ნებისმიერი შეყვანა გააკეთებს, თუნდაც უბრალო რეზისტორი და ღილაკი. მაგრამ საჭიროა მრავალი საათის ციკლი ინსტრუქციის შესასრულებლად. გამომავალზე ჩაწერის ინსტრუქცია თავისთავად იღებს 12 ციკლს. თქვენ ალბათ არ გინდათ იჯდეთ იქ და დააჭიროთ ღილაკს 100+ ჯერ, რომ მიიღოთ კოდის მხოლოდ ერთი მარყუჟი (ფაქტობრივი რიცხვები მითითებულია ინსტრუქციის ბოლოს). სწორედ ამისთვის არის NE555. ის აკეთებს გადართვას თქვენთვის და ამას აკეთებს (შედარებით) სწრაფი ტემპით.

სანამ რამის გაყვანილობას დაიწყებდეთ, შეიძლება მოგინდეთ წინსვლა და გაერკვნენ, თუ როგორ გსურთ თქვენი კომპონენტები დაფაზე დაფარული. ჩემი საათის წრე გარკვეულწილად არის დაფის ბოლოში ისე, რომ ის სხვა კომპონენტების გზაზე არ იყოს. ჩვენ ვივარაუდოთ, რომ თქვენ იცით როგორ გააკეთოთ ძირითადი საათი ტაიმერით. თუ არა, თქვენ მოგინდებათ მოძებნოთ "555 Astable" და მიჰყევით გაკვეთილს. გამოიყენეთ 1K რეზისტორი 5V სარკინიგზო ხაზსა და ტაიმერის პინ 7 -ს შორის (R1) და 10K შორის 7 და pin 2 (R2) შორის. დარწმუნდით, რომ გადააყენეთ გადატვირთვის პინი, პინ 4, 5V სარკინიგზო ხაზთან, რომ ტაიმერი იმუშაოს. მე დავუშვი LED გამომავალი ჩემი, ასე რომ მე შემიძლია შევამოწმო, რომ საათი მართლაც მუშაობდა, მაგრამ ეს არ არის საჭირო.

NE555– ის სხვა ვარიანტია მისი დაყენება როგორც NOT კარიბჭე და 1K რეზისტორის გამოყენება, რომ გამომავალი უკან შეაერთოს შესასვლელთან. ჩვეულებრივ, მიზანშეწონილია გამოიყენოთ 3 ტაიმერი ამისათვის, მაგრამ აღმოვაჩინე, რომ მხოლოდ 1 უნდა იმუშაოს კარგად. უბრალოდ იცოდეთ, რომ თუ ამას გააკეთებთ, ის ძალიან დიდი სიჩქარით რხევა იქნება და ძალიან ძნელი, შეუძლებელიც კი იქნება იმის თქმა, რომ გამომავალი ები ანათებს. ამ კონფიგურაციას ეწოდება "რგოლის ოსცილატორი".

გაითვალისწინეთ, რომ ჩვენ ჯერ არ ვუკავშირდებით საათს პროცესორს. ჩვენ უბრალოდ ვამზადებთ მას. ასევე გაითვალისწინეთ ლოგიკური ჩიპი სურათზე საათის ზემოთ. იგი მოგვიანებით დაემატა და ეს იყო ერთადერთი ნახევრად გონივრული ადგილი, რომელიც დარჩა მის დასაყენებლად. იგი გამოიყენება RAM/ROM შერჩევისთვის. ეს ინსტრუქცია იგნორირებას უკეთებს RAM- ს, ასე რომ თქვენ არ გექნებათ ეს ჩიპი თქვენს დაფაზე.

ახლა ჩვენ ვამაგრებთ გადატვირთვის სქემას. პირველი თქვენ უნდა იპოვოთ ადგილი თქვენს დაფაზე ამისათვის. მე ავირჩიე საათის გვერდით. დაამატეთ თქვენი ღილაკი დაფაზე. გამოიყენეთ 1K რეზისტორი, რომ დააკავშიროთ ღილაკის ერთი მხარე 5V სარკინიგზო ხაზთან. ჩვენი RESET ქინძისთავები აქტიურია დაბალი, რაც იმას ნიშნავს, რომ ჩვენ გვჭირდება მათი მაღლა შენახვა. სწორედ ამისთვის არის რეზისტორი. ეს კავშირი ასევე არის გადატვირთვის ქინძისთავების შეერთების ადგილი. ღილაკის მეორე მხარე პირდაპირ მიწაზე მიდის. თუ გსურთ ენერგიის გადატვირთვა, დაამატეთ 10uF კონდენსატორი ამ შეერთებას. ის შეინარჩუნებს ძაბვას გადატვირთვის ქინძისთავებზე საკმარისად დიდხანს, რომ გააქტიუროს გადატვირთვის სქემა პროცესორსა და ფლიპ ფლოპში.

ნაბიჯი 3: Z80- ის გაყვანილობა

ახლა ჩვენ მივდივართ ძირფესვიანად. ჩვენ გავაფორმებთ მხეცს, რომელიც არის Z80. ჩემს დაფაზე, მე Z80 დავაყენე დაფის იმავე მონაკვეთზე, როგორც გადატვირთვის სქემა. როგორც უკვე აღვნიშნეთ, პირველი მავთულის დენის რელსები. 5V მიდის პინ 11 -ზე მარცხნივ და მიწა არის ერთი პინი ქვემოთ, მაგრამ მარჯვნივ. თქვენ შეიძლება ასევე შენიშნეთ ჩიპის უცნაური სიგანე. ეს გამოიწვევს თქვენ 3 ღია კონექტორს ერთ მხარეს პურის დაფაზე და 2 მეორეზე. ეს მხოლოდ ნაკლებად მოსახერხებელს ხდის დამატებითი ნივთების მიერთებას, თუ ამას გადაწყვეტთ.

შემდეგი პინ ნომრები-მე ვთვლი, რომ თქვენ იცით როგორ დაითვალოთ ქინძისთავები IC– ზე-გამოუყენებელი საშუალებებია და უნდა იყოს მიბმული 5V სარკინიგზო ხაზზე: 16, 17, 24, 25.

გახსოვთ ჩვენი საათი? მისი ამონაწერი მიდის პინ 6 -ზე z80- ზე. გადატვირთვის სქემა უკავშირდება პინ 26 -ს. დაფაზე სხვა კომპონენტების გარეშე, ეს რამდენადაც მე შემიძლია გაგიცნოთ თავად z80- ის გაყვანილობა. მასზე მეტი გაყვანილობა გაკეთდება შემდგომ ნაბიჯებში.

იმის გამო, რომ მე უკვე ჩამონტაჟებული მქონდა წრე მანამ, სანამ არ ვიფიქრებდი ამის წერის ინსტრუქციულად, შემდეგ სურათზე დავიკიდებ შემდეგ ნაბიჯამდე.

ნაბიჯი 4: ROM– ის გაყვანილობა

ROM- ის გაყვანილობა
ROM- ის გაყვანილობა

შენიშვნა: თქვენ შეიძლება დაგჭირდეთ მისი რეალურად განთავსება დაფაზე, თუ მას ჯერ კიდევ სჭირდება დაპროგრამება (ამის შესახებ მოგვიანებით).

ROM– ისთვის, მე განვათავსე იგი Z80– ის გვერდით მარჯვნივ და ასევე გადავაგდე ერთი პინდი დაფაზე. ამან მომცა საშუალება პირდაპირ მისამართის ავტობუსი შემეკრა, მაგრამ უფრო მოგვიანებით. AT28C64B არის EEPROM, რაც იმას ნიშნავს, რომ მისი დაპროგრამება შესაძლებელია რამდენჯერმე ზოგიერთი ქინძისთავების გამორთვისა და ჩართვის გზით. ჩვენ არ გვინდა, რომ ჩვენი EEPROM შემთხვევით გადაპროგრამდეს, როდესაც ის წრეშია. ასე რომ მას შემდეგ რაც თქვენი დენის რელსები გაერთეთ, შეაერთეთ მავთული 27 (/WE) 5V სარკინიგზო ხაზთან, რომ საერთოდ გამორთოთ ჩაწერის ფუნქცია.

ჩემი პროგრამა იმდენად მცირეა, მე მჭირდებოდა მხოლოდ ქვედა 5 მისამართის ხაზი (A0-A4) დაკავშირებული, მაგრამ მე მაინც შევიყვანე A5, A6 და A7, ასე რომ მე შემიძლია დავწერო უფრო დიდი პროგრამები დამატებითი სამუშაოს გარეშე. დამატებითი მისამართების ხაზები (A8-A12) მიბმულია პირდაპირ მიწაზე, რათა თავიდან აიცილოს არასასურველი წვდომა უმაღლეს მისამართებზე მცურავი შეყვანისგან. გამოუყენებელი მისამართის შეყვანა მიბმული მიწასთან და ჩაწერის კონტროლი 5V- ზე, დანარჩენი გაყვანილობა საკმაოდ მარტივია. იპოვეთ A0 პროცესორზე და მიაბით A0 ROM– ზე. შემდეგ იპოვეთ A1 პროცესორზე და მიამაგრეთ იგი A1– ზე ROM– ზე. გააკეთეთ ეს მანამ, სანამ არ შეაერთებთ ყველა მისამართს ერთად. სურათზე, ჩემი მისამართის ავტობუსი ROM– ში შესრულებულია ლურჯი გაყვანილობით. RAM– ისკენ მიმავალი მისამართის ავტობუსი კეთდება წითელ გაყვანილობაში. ეს მავთულები წინასწარ იყო გაჭრილი და გაშიშვლებული, რადგან ისინი მოდიოდნენ პურის დაფის გაყვანილობის ნაკრებში და იდეალური იყო ამ გაყვანილობისთვის.

მას შემდეგ რაც მიიღებთ მისამართებს სადენით (ამას ჰქვია მისამართის ავტობუსი), ზუსტად იგივე გააკეთეთ D0, შემდეგ D1, D2 და ა.შ. ქინძისთავებისთვის, გააკეთეთ ეს მონაცემთა ყველა ქინძისთავისთვის (D0 - D7) და თქვენ გაქვთ მონაცემთა ავტობუსი სადენიანი. ჩვენ თითქმის დავასრულეთ ROM– ის გაყვანილობა. იპოვნეთ ROM- ის /CE (ჩიპის ჩართვის) პინი და მიაწებეთ პროცესორების პინ 19 -ში, /MREQ (მეხსიერების მოთხოვნა) და შემდეგ იპოვეთ ROM's /OE (გამომავალი ჩართვა) და შეაერთეთ პროცესორის პინ 21, /RD (წაკითხვა). ჩვენ უკვე დავასრულეთ. ეს ყველაფერი კეთდება ჯუმბერის მავთულხლართებით, რადგან ისინი უნდა წავიდნენ პროცესორის მეორე მხარეს და პურის დაფა არ იძლევა საკმარის ადგილს, რომ გამოიყენოს სისუფთავე გაყვანილობა.

ნაბიჯი 5: გამოყვანის გაყვანილობა

გაყვანილობის გამომავალი
გაყვანილობის გამომავალი
გაყვანილობის გამომავალი
გაყვანილობის გამომავალი

იმის გამო, რომ ის იყო დაუსახლებელი, მე გამოვარჩიე დაფის განყოფილება Z80– დან მარცხნივ გამომავალი. განათავსეთ ფლიპ-ფლოპი იქ და დააკავშირეთ ისინი ელექტროგადამცემი რელსებით. პინ 1, /MR (გადატვირთვა) შეიძლება პირდაპირ დაუკავშირდეს პროცესორის გადატვირთვის პინს, მაგრამ შეგიძლიათ დატოვოთ იგი მიბმული 5 ვ სარკინიგზო ხაზთან. ამის გაკეთება მხოლოდ გამოიწვევს უსარგებლო მონაცემების ჩვენებას პირველ დაწერამდე. ყურადღება მიაქციეთ, როგორ აქვს ჩიპს საათის შეყვანა პინზე 11. ეს შეყვანა უცნაურია იმით, რომ ის გააქტიურებულია, როდესაც პინი მაღლა მიდის. ასევე გაითვალისწინეთ, რომ ეს პინი არ არის იგივე საათი, რომელიც მართავს პროცესორს. ეს საათი აჭერს მონაცემთა ავტობუსზე დამტკიცებულ მონაცემებს.

გახსოვთ, როგორ დავუკავშირეთ D0 - D7 ROM– ზე იმავე პროცესორზე? ზუსტად იგივე გააკეთეთ ამ ჩიპისთვის. მისი D0 გადადის D0– ზე მონაცემთა ავტობუსზე და ასე შემდეგ. ქინძისთავები, რომლებიც იწყება "Q" - ით არის გამომავალი. სანამ მათ გავაერთიანებთ, მეტი ჩიპი უნდა დავამატოთ. მე გამოვიყენე ოთხკუთხედის კარიბჭე, რადგან მე მაქვს მათი მილი და მე უკვე მჭირდებოდა, მაგრამ ნებისმიერი ჩიპი იმუშავებს, თუ მას სწორად დაამონტაჟებ. შემეძლო ყველა კარიბჭეზე გამეკეთებინა ერთი შეყვანა მიწასთან და გამომეყენებინა სხვა შესასვლელი, როგორც შესასვლელი, მაგრამ სიმარტივისთვის ავირჩიე ორივე შეყვანის ერთმანეთთან შეერთება.

ჩიპები მოვათავსე ფლიპ ფლოპის ქვემოთ, რათა გაუადვილდეს პირდაპირ მხტუნავების გარეშე გაყვანილობა, მაგრამ მე ამ მომენტში მავთულები სულ ცოტა მქონდა, ასე რომ ამას საბოლოოდ მნიშვნელობა არ ჰქონდა. Q0, Q1….. Q7 ფლიპ-ფლოპზე მიდის ცალკეულ კარიბჭეზე შესასვლელებთან. თითოეულ პაკეტში/ჩიპში 4 კარიბჭე მქონდა 2 პაკეტი და გამოვიყენე ყველა კარიბჭე. თუ აღმოაჩენთ ფლიპ ფლოპის ვერსიას, რომელსაც შეუძლია LED- ების მართვა ისე, რომ არ დაგჭირდეთ მსგავსი ბუფერი, ეს ორი ჩიპი არ არის საჭირო. თუ თქვენ იყენებთ კარიბჭეს, როგორც ბუფერს, რომელსაც არ აქვს შემობრუნებული შედეგები (AND/OR/XOR), მაშინ თქვენ შეგიძლიათ შეაერთოთ LED- ები ისე, როგორც ელოდით. თუ თქვენ იყენებთ იგივე ნაწილებს, როგორც მე და/ან გამოსავალი ინვერსიულია, LED- ები უნდა იყოს მიერთებული ქვემოთ აღწერილი. პირველი სურათი გვიჩვენებს გამომავალი IC ნაწილს.

გამოიყენეთ 330 Ohm რეზისტორები, რომ LED- ები დადებითი (ანოდი) დაუკავშიროთ 5V რკინიგზას და დააკავშიროთ უარყოფითი (კათოდური) კარიბჭეების გამოსასვლელთან. მეორე სურათზე ხედავთ, რომ მე გამოვიყენე ორი რეზისტორული ავტობუსი, თითოეულს მხოლოდ ხუთი შიდა რეზისტორით. ასეთი LED- ების გაყვანილობა მათ ნათელს გახდის, როდესაც გამომავალი გამორთულია. ჩვენ ამას ვაკეთებთ, რადგან გამომავალი გამორთულია შეყვანის ჩართვისას. აბსოლუტურად დარწმუნდით, რომ თვალყურს ადევნებთ რომელი კარიბჭეა თქვენი შედეგები ფლიპ-ფლოპის კონტროლიდან. თუ თქვენი LED- ები არ იქნება მიმოფანტული ან მათი რიგი უაზროა, მათი კვალის დაკარგვამ შეიძლება გამოიწვიოს დაბნეულობა მოგვიანებით, როდესაც თქვენ ჰკითხავთ საკუთარ თავს, თუ რატომ არის გამომუშავება არასწორი.

ნაბიჯი 6: შეყვანის გაყვანილობა

შეყვანის გაყვანილობა
შეყვანის გაყვანილობა

აიღეთ ის 74HC374 ფლიპ-ფლოპი და განათავსეთ სადმე. ჩემი სადღაც იყო Z80 ქვემოთ დაფის ბოლოში. გახსოვთ ბოლო დრო, როდესაც ჩვენ D0- ს დავუკავშირდით D0- ს და D1- ს D1- ს და ასე შემდეგ? ამჯერად ჩვენ Q0- ს ვუკავშირდებით D0- ს და Q1- ს D1- ს და ასე შემდეგ. საბედნიეროდ, ჩვენ არ გვჭირდება ბუფერული ჩიპების დამატება ამჯერად, ჰაჰა. სამაგიეროდ ჩვენ ვაპირებთ დავუკავშიროთ 10K Ohm თითოეულ "D" პინს (D0-D7) და მიწას და შემდეგ ღილაკს იმავე ქინძისთავებთან და 5V სარკინიგზო ხაზთან. ან შეგიძლიათ გამოიყენოთ რეზისტორის ავტობუსი და მნიშვნელოვნად შეამციროთ თქვენი ნაწილის რაოდენობა. 3x4 ღილაკის მატრიცა (მატრიქსული გამომუშავების გარეშე !!) ასევე დაგეხმარებათ. სურათი გვიჩვენებს შეყვანის წრის მთლიანობას წებოს ლოგიკასთან ერთად (ეს ნაწილი არის შემდეგი).

ნაბიჯი 7: წებო ლოგიკა

ჩვენ გვაქვს ბოლო რამ დასაკავშირებლად. მას უწოდებენ "წებოს ლოგიკას", რადგან იგი გამოიყენება საკონტროლო სიგნალების დეკოდირებისთვის, რათა ყველაფერი იმუშაოს; ეს არის ის, რაც აერთებს წრეს ერთად. როდესაც პროცესორს სურს მონაცემების ჩაწერა გამომავალზე, ორივე /IORQ და /WR (შესაბამისად 20 და 22 შესაბამისად) მცირდება და გაგზავნილი მონაცემები მტკიცდება მონაცემთა ავტობუსზე. საათის პინი ორივე ფლიპ-ფლოპზე აქტიურია მაღალი, რაც იმას ნიშნავს, რომ მონაცემები იკეტება, როდესაც პინი იღებს მაღალ სიგნალს. ჩვენ ვიყენებთ NOR კარიბჭეს და მავთულს /IORQ კარიბჭის ერთ შესასვლელს და /WR მეორე შესასვლელს. როდესაც რომელიმე მაღალია, რაც იმას ნიშნავს, რომ IO სქემები არ არის არჩეული ან ჩაწერის ოპერაცია არ არის შესრულებული, ფლიპ ფლოპის საათის გამომავალი კვება რჩება დაბალი. როდესაც ორივე შეყვანა დაბალია და მხოლოდ მაშინ, როდესაც გამომავალი იზრდება მაღალი და ფლიპ-ფლოპი იჭერს მონაცემებს.

ახლა ჩვენ უნდა შევაერთოთ შეყვანის ფლიპ ფლოპი. ჩვენ შეგვიძლია დავაკავშიროთ საათის პინი ზუსტად ისე, როგორც წინა, მაგრამ /IORQ და /RD გამოყენებით. სხვა ფლიპ ფლოპისგან განსხვავებით, ჩვენ ასევე გვაქვს /OE პინი, რომელიც საჭიროა დაბალი იყოს მხოლოდ მაშინ, როდესაც /IORQ და /RD დაბალია. ჩვენ შეგვიძლია გამოვიყენოთ OR კარიბჭე. ან ჩვენ შეგვიძლია უბრალოდ მივიღოთ სიგნალი, რომელიც უკვე გვაქვს საათისათვის და შევაბრუნოთ ის ორი შემობრუნებული კარიბჭედან ერთ -ერთით, რომელიც უკვე გვაქვს. იმ დროს, როდესაც მე ვაცხადებდი ამ ინსტრუქციას, მე არ მქონდა OR კარიბჭე, ამიტომ გამოვიყენე ერთი უკანასკნელი ვარიანტი. ამ უკანასკნელი ვარიანტის გამოყენება ნიშნავს, რომ მე არ მჭირდება რაიმე დამატებითი ნაწილის დამატება მაინც.

ნაბიჯი 8: პროგრამირება

თუ თქვენი გაყვანილობა იქნება სწორი და ჩემი ახსნა ნათელია, რჩება მხოლოდ ROM პროგრამირება. ამის გასაკეთებლად რამდენიმე გზა არსებობს. შეგიძლიათ აიღოთ მარტივი გზა და შეუკვეთოთ ახალი ჩიპი დიგიკეიდან. როდესაც თქვენ შეუკვეთებთ ნაწილს, თქვენ გექნებათ შესაძლებლობა ატვირთოთ HEX ფაილი და ისინი დააპროგრამებენ მას გაგზავნამდე. გამოიყენეთ HEX ან OBJ ფაილები, რომლებიც თან ერთვის ამ ინსტრუქციას და უბრალოდ დაელოდეთ ფოსტაზე მისვლას. ვარიანტი 2 არის პროგრამისტის შექმნა არდუინოსთან ან სხვა რამეზე. მე შევეცადე ეს მარშრუტი და მან ვერ მოახერხა გარკვეული მონაცემების სწორად კოპირება და ამის გასარკვევად კვირა დამჭირდა. მე დავასრულე ვარიანტი 3, რომელიც არის მისი ხელით დაპროგრამება და გადამრთველების გადამრთველები მისამართისა და მონაცემთა ხაზების გასაკონტროლებლად.

პროცესორის უშუალოდ OP კოდზე გადაყვანის შემდეგ, მთელი ეს პროგრამა მხოლოდ 17 ბაიტის მისამართის სივრცეშია, ამიტომ ხელით პროგრამირება არც ისე საშინელი იყო. პროგრამა იტვირთება ზოგადი დანიშნულების რეესტრში B მნიშვნელობა 00. რეგისტრი B გამოიყენება წინა დამატების შედეგის შესანახად. ვინაიდან მათემატიკა ხდება A რეგისტრი, ჩვენ არ გამოვიყენებთ მას მონაცემების შესანახად.

როდესაც ვსაუბრობთ A რეგისტრზე, ჩვენ ვასრულებთ IN ბრძანებას, რომელიც კითხულობს შეყვანას და ვინახავთ წაკითხულ მონაცემებს A.- ში, შემდეგ ვამატებთ B რეგისტრის შინაარსს და გამოვყოფთ შედეგს.

ამის შემდეგ, რეგისტრი A კოპირდება რეესტრში B. და შემდეგ ჩვენ ვაკეთებთ რიგი ნახტომის ბრძანებებს. რადგანაც ყველა ნახტომი მიუთითებს მისამართების ხაზების ქვედა ბაიტზე და რადგანაც ნახტომის ინსტრუქციის ზედა ბაიტი მოცემულია მეორე არგუმენტში და არის "00", ჩვენ შეგვიძლია ვაიძულოთ თითოეული ნახტომი მოჰყვეს NOP. ჩვენ ამას ვაკეთებთ იმისთვის, რომ გამოვყოთ დრო გამომავალ ჩვენებასა და შეკითხვის წაკითხვას შორის, რათა თავიდან ავიცილოთ შემთხვევითი შეყვანა. თითოეული ნახტომი იყენებს ათი საათის ციკლს და თითოეული NOP იყენებს ოთხს. თუ მარყუჟს ძალიან დიდი დრო სჭირდება თქვენი სურვილისამებრ, შეგიძლიათ გაზარდოთ საათის სიჩქარე ან შეგიძლიათ გადაპროგრამოთ ის ერთი ნახტომის ნაკლები გამოყენებისათვის.

ნაბიჯი 9: ტესტირება

თუ ყველაფერი სწორად დააკავშირეთ და თქვენი ROM სწორად არის დაპროგრამებული, თქვენ უნდა შეასრულოთ ერთი ბოლო ნაბიჯი: შეაერთეთ იგი და ნახეთ მუშაობს თუ არა. დააჭირეთ ღილაკს და დაელოდეთ რამდენიმე წამს. პროგრამის პირველ მარყუჟს მიაღწევს 81 საათის ციკლი და თითოეული მარყუჟი იღებს 74 საათის ციკლს.

თუ ის არ მუშაობს, შეამოწმეთ შორტები და დაუკავშირებელი ქინძისთავები (იხსნება) და გაყვანილობის სხვა საკითხები. თუ თქვენ გამორთეთ ჩართვის გადატვირთვა, თქვენ უნდა გააკეთოთ ხელით გადატვირთვა, სანამ პროცესორი რამეს გააკეთებს. თქვენ ასევე შეგიძლიათ მიამაგროთ LED- ები მისამართის ავტობუსში, რომ ნახოთ იქცევიან თუ არა ისინი. მე თვითონ მქონდა პრობლემები, ამიტომ ამის ნაცვლად პირდაპირ მონაცემთა ავტობუსში ჩავდექი. ამან მომცა საშუალება მენახა რა ხდება პროცესორსა და ROM– ს შორის, ფიქრის გარეშე, თუ ROM სწორად იკითხება, რასაც დასჭირდება დროული დიაგრამები და მე უბრალოდ არ მსურს ამის ჩართვა. აღმოჩნდა, რომ კარგი არჩევანი იყო, რადგან საბოლოოდ დავიჭირე პრობლემური OP კოდები, რომლებიც არასწორად იყო შენახული.

გირჩევთ: