 Ornanya, dan terima kasih untuk saya bercakap dengan ini dan berkongsi sesuatu yang saya lakukan. Saya tidak akan berkongsi walaupun ia akan bekerja. Tentang ini, ia belum selesai. Tapi saya akan berkongsi apa-apa yang saya telah dibina. Sebelum kita lakukannya, saya akan mengubah kerja saya dan pendidikan kerja kerana mereka tiada apa-apa untuk lakukan elektronik. Saya ibu bapa. Dan anak saya kedua saya berlaku dua bulan lalu. Dan itu berlaku sebabnya saya nampak sedikit seronok sekarang. Dan perkara yang lain adalah saya adalah operator radio emat. Jadi kita berkongsi dengan grup yang sama seperti Roland. Ya. Jadi salah satu perkara yang mengapa saya sebenarnya telah membuat projek CPU, adalah sebenarnya saya ingin belajar bagaimana menggunakan FPGA. Ya, sesuatu seperti ini. Ya. Dan apa yang berlaku adalah sesuatu... sesuatu implementasi yang biasanya telah dilakukan adalah orang akan memperkenalkan CPU di FPGA. Tapi untuk seseorang seperti saya dengan tidak tahu bagaimana CPU sebenarnya berlaku, saya perlu pergi dan belajar dengan diri saya. Ya. Dan jadi... Maaf. Tengah saya. Tengah saya sedang berdiri. Okey. Dan jadi, saya mengambil jalan ini untuk mencari lebih banyak tentang bagaimana CPU berlaku. Okey. Jadi sekarang saya akan mengeluarkan kamera saya dan saya akan berkongsi screen saya. Okey. Baiklah. Jadi perkara pertama yang kita lakukan, dalam membangunan CPU adalah membangunan klock. Dan ini... ini pekerjaan. Okey, maaf. Biar saya... Okey. Jangan terima kata-kata... kamu dapat melihat screening saya? Ya. Okey, screen berkongsi monarch, kan? Ya. Okey. Bagus. Bagus. Jadi perkara pertama yang kita lakukan untuk membangunan CPU ini adalah membangunan klock. Dan ini, menurut saya, ini adalah arahan makhluk yang menyenangkan saya. Kerana itu sangat mencari bagaimana saya memakraskan pemisi Philippines 555 dalam semua kecualitesan. Jadi apa yang anda lihat di sini di sini? di sini. Ini tiga bahagian silikon atau i-C di sini. Ia sebenarnya adalah 5x5. Mereka berada di setiap konfigurasi yang berlainan. Dari jalan-jalan, kita ada mode A-Stable, mode Mono Stable dan mode B-Stable. Sebenarnya, untuk memberikan bahan-bahan bahagian dalam bahagian silikon, mode A-Stable ini sebenarnya digunakan sebagai timer otomatis, yang akan membuat LED Blink pada interval yang berlainan. Sebenarnya, mode Mono Stable ini berlainan. Ia menghidupkan penggunaan untuk menghidupkan bahagian silikon, hanya dengan menghidupkan bahagian silikon di sini. Dan akhirnya, kita ada satu yang adalah mode B-Stable. Ia berlainan sebagai switch. Dan apa yang ianya benar-benar berlainan adalah ia menghidupkan bahagian silikon untuk menghidupkan bahagian silikon dan bahagian silikon. Jadi, bahagian silikon di sini tidak selesai. Kerana ada perlukan perangkatan lain untuk menghidupkan bahagian silikon untuk berlainan. Jadi, ini adalah bagaimana perangkatan berlainan sepanjangnya. Jadi, bahagian silikon di sini sebenarnya adalah mode B-Stable, yang menolakkan anda memilih atau beri signal untuk menghidupkan bahagian silikon atau bahagian silikon. Jadi, seperti yang anda lihat, ada beberapa perangkat yang sudah digunakan di sini. Jadi, apa yang berlaku adalah bagi orang yang lebih berkenaan dengan elektronik digital, anda mungkin tahu bahawa anda boleh menggunakan perangkat universal untuk menghidupkan perangkatan ini. Dan keadaan adalah anda mungkin akan menggunakan perangkatan yang lebih kurang. Maksud saya, perangkatan lebih kurang. Jadi, saya ada beberapa video tentang bagaimana perangkatan akan berlaku. Ini adalah semua perangkatan yang di atas, semua perangkatan logik. Jadi, saya akan menghidupkan semua perkara ini, tetapi ini adalah basically beberapa perangkatan yang anda boleh menggunakan untuk menggunakan perangkatan yang berlainan, hanya dengan menggunakan satu perangkatan. Seperti bagi menggunakan perangkatan yang berlainan, anda boleh menggunakan perangkatan anda, perangkatan anda, perangkatan anda dan apa-apa pun. Ya, semacamnya anda juga boleh menggunakan perangkatan anda untuk melakukan perkara yang sama. Jadi, dengan perangkatan yang telah dibina, perkara yang tersebut adalah bagaimana kita membangun komponen lain, atau bagaimana kita mulakan menghidupkan komponen. Kita perlu memperkenalkan konsep ini dengan perangkatan. Dan perangkatan ini sebenarnya adalah sebuah jalan. Sebuah jalan yang tersebut adalah sebuah jalan yang berlainan dengan komponen yang berlainan yang berlainan. Seperti dalam perangkatan ini yang saya mencari dari video YouTube, anda tahu bahawa komponen yang berlainan dan sebuah jalan yang berlainan adalah sebuah komponen A sebagai perangkatan. Dan anda ada sebuah jalan yang berlainan yang berlainan kembali ke jalan yang sama. Dan, tentu saja, salah satu prinsip yang penting bagi semua ini adalah ada selalu sebuah jalan yang berlainan dan berlainan. Sebuah jalan yang berlainan untuk memperkenalkan komponen dan berlainan untuk memperkenalkan komponen untuk memperkenalkan komponen. Dan seperti yang anda lihat, semua komponen ini berlainan dengan koneksi yang sama. Dan sebab itu, anda tidak boleh mempunyai dua komponen yang berlainan dengan sebuah jalan yang sama. Jika tidak, anda akan dapat sebuah jalan yang berlainan. Untuk dapat memperkenalkan komponen yang berlainan dengan berlainan dengan koneksi yang penting di sini, kita perlukan sebuah jalan yang berlainan untuk memperkenalkan komponen. Dan itu di mana jalan yang berlainan sebenarnya. Dan ini sebenarnya bagaimana jalan yang berlainan. Untuk sesiapa yang mahu memperkenalkan projek ini, perkara yang saya beritahu adalah apabila anda membeli jalan yang berlainan, pastikan anda membeli jalan yang berlainan dengan sebuah jalan yang berlainan. Kerana saya membeli jalan yang berlainan dengan beberapa jalan yang tidak dapat diperkenalkan. Dan sebagai alasan, saya tidak dapat melakukan ini. Selepas kita bercakap tentang jalan yang berlainan dan jalan yang berlainan, perkara yang saya mahu bercakap adalah konsep jalan yang berlainan. Menurut saya, bagaimana jalan ini sebenarnya berlainan. Pertama, apabila anda membeli jalan yang berlainan, jalan yang berlainan sebenarnya berlainan dalam jalan yang berlainan. Dan ia dapat membeli jalan yang berlainan. Pertama, bagaimana jalan yang berlainan inom jalan yang berlainan? Untuk memuntungkan jalan yang berlainan, bagaimana anda dapat melakukan jalan yang berlainan untuk melakukan jalan yang berlainan. Selepas kita bercakap tentang jalan yang berlainan, esok anda dapat meng είναι jalan yang berlainan. Salah. Kami menjadikan alternasi, jalan yang berlainan. Dan dengan itu, efektifkan mempunyai mempunyai. Jadi, bagaimana perkara ini sebenarnya berlaku adalah Kami akan berkata kita mempunyai kawasan di atas sini Dan kawasan ini telah dibuat. Dan menurut saya bahawa ini, ini telah mempunyai kawasan di sini Sudah mempunyai data. Apa yang berlaku itu? Kamu akan berakhir dengan logik yang berlaku 0 di sini Kami akan berkata 0 di atas kawasan di sini Yang akan selalu berkata 0 Okey? Dan kemudian kami melihat di sini Okey? Kawasan ini telah dibuat ke satu Dan kemudian apa-apa data yang di dalam kawasan di atas ini Mempunyai kembali ke sini Jadi, alat ini selalu berkata Baiklah, dengan dua kawasan ini Apabila ia berlaku ke kawasan di atas sini Kamu akan berlaku kembali ke kawasan di atas ini Kawasan ini telah dibuat ke kawasan di atas Dan itu sehingga kawasan ini telah dibuat Baiklah Jadi, jika kita melihatnya di atas kawasan di mana Kawasan ini telah dibuat Apa yang berlaku di sini? Apa yang berlaku di sini adalah Kawasan ini telah berlaku di sini Ada satu kawasan di sini Dan apa-apa kawasan yang kamu cuba memasuk Untuk kawasan di atas kawasan di atas kawasan Ia boleh menjadi 0 atau 1 Tapi kerana ia adalah kawasan di atas Kamu akan selalu memasukkan Kawasan yang kamu cuba memasukkan Dan sebab kawasan ini telah dibuat Untuk memasukkan kawasan di atas Kembali ke kawasan di atas Tapi kerana kawasan ini telah dibuat Kawasan ini telah dibuat Kawasan ini telah dibuat ke kawasan di atas Jadi, tanpa apa-apa Apabila kawasan ini telah dibuat, ia akan menjadi 0 Jadi, apabila kawasan ini telah dibuat ke kawasan di atas Kamu akan memasukkan kawasan baru di atas Kawasan ini telah dibuat Dan itu bagaimana kamu memasukkan Kawasan yang telah dibuat ke kawasan Jadi, kamu hanya memikirkan Hari ini ram dan Semuanya yang lain Kawasan yang telah dibuat Mereka adalah Kawasan ini telah dibuat Tapi memulangkan oleh banyak juta kali Jadi, kawasan ini sendiri Bisa hanya memastikan 1 bit 0 atau 1 Jadi, untuk mempunyai 1, 2, 8 GB 2, 5, 6 GB Ketua Kamu mungkin perlukan juta juta Ketua kawasan ini Baik Jadi, seperti yang anda lihat Kamu boleh menggunakan logik yang berdiri Untuk memasukkan kawasan kamu Tapi untuk memasukkan kawasan Apa yang saya lakukan Apa yang saya lakukan adalah Saya menggunakan kawasan ini Dengan kawasan 74 LS 173 Yang penting Itu adalah kawasan yang sama Tetapi, bagaimanapun Apa yang kamu ada Ia adalah kawasan ini Tapi untuk kawasan saya Untuk memasukkan kawasan ini Kawasan ini selalu dibuat Sebab itu Saya telah mempunyai LED Untuk memuatkan saya untuk mengawal kawasan Untuk setiap kawasan Setiap kawasan Jadi, pertanyaan yang selalu dibuat Jika kawasan ini selalu dibuat Bukankah kamu selalu memasukkan kawasan ini Untuk memasukkan kawasan ini Untuk memasukkan kawasan ini Bukankah, bagaimanapun Semua kawasan ini Semua kawasan ini Sangat sama Saya tidak fikir saya dapat melihat Untuk memuatkan kawasan itu Apa yang saya telah lakukan Ia untuk memasukkan kawasan di antara itu Jadi, kawasan ini Seperti memasukkan kawasan ini Sehingga kawasan ini Selalu memasukkan kawasan ini Kawasan ini ada untuk menghentikan data Untuk memasukkan kawasan ini Dan itu adalah keadaan Kawasan ini menghentikan Jika kita melihat kembali Dalam keadaan sebelumnya Setiap kawasan ini nampak sesuatu seperti ini Kita ada 8 kawasan yang masuk 8 kawasan yang keluar Dan kita ada kawasan yang memasukkan Kawasan ini, dan kita ada kawasan yang menghentikan Jadi, kawasan yang memasukkan Ia mengaturkan di dalam kawasan ini Kawasan ini, saya lihat Kawasan yang memasukkan Kawasan output keadaan mungkin terbangkapan Tapi sebab kawasan ini, saya perlukan Kawasan diketahui untuk mengisi setiap kawasan Itu sebabnya kawasan ini selalu dikelepakan Jadi, untuk mengambil kawasan ini Saya menggunakan kawasan lain ini LX74-LS245 Dan kawasan yang memasukkan Kawasan ini Jadi, kita sentiasa melomong di setiap LED yang berada di setiap bit yang dihidupkan dan ini mengambil apabila ia dihidupkan, ia akan menolakkan informasi untuk dihidupkan ke bus ini. Jadi, ini hanya koneksi bagaimana hal ini nampak seperti di sini. Jadi, untuk membuat perasaan dari gambar ini di sini, basically all those green lines here, all these green lines here are the registers feeding into the buffer. And at the top of the buffer, the top row of the buffer is where the output is coming out. But of course you can see these blue lines here. These blue lines here I'm actually connecting the output to the input of the registers. The reason why we could do this is because we have the load and enable switch. We've both turned off when these eight holes here are connected to the bus. Nothing happens to this thing here. But with the load turned on, whatever that's on the bus will be copied onto the register here. And then with the output turned on, what happened is that this buffer here would then release what's on the register into the bus. In doing so, we do not need to have eight separate lines going in and eight separate lines going out. We just need to have eight lines. And these eight lines, it's, well, I don't know what you call that, duplex line. It allows the input and the output of data. I mean, this is just a picture of what I tried to do. And try to light up some LEDs in the register. In this case, you can see that it is the first bit that got light up. And what I tried to do was to feed it to a temporary makeshift bus. And with the other register connected to the same bus, that first bit gets transferred to the next one. Essentially, it is a high voltage transferred to the first bit position to the central bus. And then from the central bus, it gets transferred back to the first bit in the second register. And that's how memory gets transferred from one point to another point. So, these are just the other registers that I'm trying to build. So, as we reach this point, I just want to introduce to you. While I do not have the full thing, many of the things that I'm talking about can be found in this book here, Digital Computer Electronics. And so, the version of the CPU that I was trying to build is this known as SAP ONE, simple as possible ONE. So, in the latest third edition of this book, it contains all the schematics from SAP ONE to SAP 3. And of course, the SAP 3 being the more complex version of the CPU. So, if you're interested, please take a look at this book. So, I'm going to skip this. So, after the register is being built, the next thing I went on to build is the Arithmetic Logic Unit, the ALU. So similarly, because this thing does not have output control, so I had to add the same buffer over here to allow me to control when the data is to be released to the bus. So, additionally, what I did was I used two 4-bit adders so as to combine into 8 bits. And in order to combine them together, I had to add the carry-out, I had to link the carry-out to the carry-in. And so, by combining these two, I essentially have an 8-bit adder. But just this 2-bit adder is not good enough. I mean, it can only add things. So, in order to allow it to subtract, what I did was to add this XOR gate right below. So, it's fairly simple to implement. All we have to do is just to turn this second output of the XOR gate, turn it to a high. And what happened is that this whole circuit will function as a subtractor. So, this thing actually takes a very long time to connect. So, in order for this arithmetic logic unit to work, what we had to do was to connect the adders to the input of the buffer. And then, from the... Just hang on a moment. Let me just take a look at this. Ha, ha, ha, ha. Okay, okay. So, in order for this to work, we need to connect the registers to the adders. And then the output of the adders to the buffer. So, this is just one register to the adder only. And then, what we do to the next register was that we wired it to the XOR gates. And then, from the XOR gates back to the second input of the adder. And that's how we can toggle between adding and subtracting. And the results goes out to this buffer over here. So, this is so far what I have. And in order to... Just hang on. Let me see how do I stop my video. Stop my... Let me see, okay. Stop my video. And so, what I'm going to do is to show you what is actually happening on my build. And with that, I will mute this chat and I will go on to the next call. Okay. Right, just give me a moment. So, this is the clock that we were talking about. Right? And so, okay, whatever you see in this blue thing here is the pausing of the clock. And the clock line is connected to the registers. And it is all connected down to the second register. Right? And so, in this clock, we can actually toggle between manual mode and the automatic mode. So, right now, it's in the manual mode. As you can see, I can use my hand to do the pausing instead. I can use the automatic mode where your pulse itself. Okay. So, before this call, I tried to do something to the register. And now, none of the register seems to like that. Okay. And so, with that, okay, my presentation is done. A round of applause for Xavier. Thank you so much and we can continue presenting the next hack where the completed. Well, maybe we have time for a couple of questions. Are you okay to take them, Xavier? Happy to. Yeah, anybody? Just turn on your mic. So, something just occurred to me while watching this. I've long thought about doing such a thing and it just never got around to doing it. It's really cool to sort of build up from much more basic chips than perhaps we're accustomed to using for most things. But the question that comes to mind is you end up spending a lot of time wiring up parallel buses by hand and you're having to select arbitrarily to use eight bits instead of four or 16 or whatever. For most communication purposes, everything has now switched to sort of single bit with serial. And it just suddenly occurs to me to wonder, has anyone done CPU designs that work this way? Because your wiring gets simpler very, very quickly. True, but I'm not sure in terms of demonstrating of the clock cycles. How hard it would be to demonstrate that because imagine if you were to use just one bit, you probably got to use more cycles to demonstrate let's say an instruction. Yes, you'll have your bus cycles and your compute cycles will no longer be in a one-to-one correspondence. Yes, yes. And I will say the beauty of this current build is to allow the user to manually pause the clock and see how things move. And using a one-bit architecture might not deliver that point. No, you'd still clock the highest frequency clock. The IO clock. But sure, your CPU instructions would take at least eight times as many cycles to happen. But it would also drastically simplify your wiring. It wouldn't divide it by eight, but it would divide it by about four and cut it in half. So I'm sort of wondering it really is going to be just now but the fundamental problem with creating a breadboard a CPU is that you've got to do all of this manually wiring and there's always one wire that's wrong. And so being able to cut the wiring down by sort of 70-80% would very much simplify the task. And so it might actually be acceptable. As long as you get in your head the idea that the IO clock and the compute clock are not the same anymore which is true for all modern CPUs anyway. You actually have a much simpler design to build and then need far fewer parts. So just a random thought that I haven't thought through at length just went, ooh, hey, it works for everything else. SATA, USB all of the modern bus standards all one bit wide times some number of lanes to go faster. Okay, thank you. Maybe Xavier can look at that. Next, anyone? If not, we'll move on to while Kingling sets up. So let's thank Xavier again. He's an accountant, by the way. He didn't want to mention that. So maybe that's why he wants more lines.