設(shè)計(jì)紅石8086(可能棄坑的那種)(一)
這個(gè)企劃其實(shí)早都有了,只是最近有進(jìn)度了而已。
廢話不多說,直接進(jìn)入正題。

首先我做了一對(duì)異步串行收發(fā)電路,是0.25bpt,起始位10.5bit,數(shù)據(jù)16bit,停止位2.5bit。

時(shí)序?qū)嶒?yàn)傳輸數(shù)據(jù)為0xAA55,電路以及實(shí)驗(yàn)結(jié)果如圖,可以推得時(shí)序規(guī)范。
這個(gè)電路目前貌似沒有什么用,但是后面也許可能大概會(huì)突然覺得用0T拖總線很麻煩、這個(gè)相對(duì)就很簡單,所以留下來備用。

然后就是0T中繼器,是照抄百度的,留著備用

當(dāng)然,它也是一個(gè)1T的非門,只是紅石火把好像更香。(pia嘰)

CPU有個(gè)功能很重要,那就是運(yùn)算。8086的算術(shù)運(yùn)算總共有如下幾種:
ADD, ADC, SUB, SBB, CMP, DAA, AAA, DAS, AAS, INC, DEC, MUL, DIV, IMUL, IDIV
仔細(xì)觀察發(fā)現(xiàn)貌似只用實(shí)現(xiàn)ADC和SBB即可,畢竟渣機(jī)怕后期CPU組裝不起來,那就做吧。這東西很簡單,百度即可。
接下來就是實(shí)驗(yàn)環(huán)節(jié)了。

如圖,我先把0x0512送上總線,然后給操作數(shù)A鎖存一個(gè)脈沖。

接著我將0x2946送上總線,并給操作數(shù)B鎖存一個(gè)脈沖。
然后其實(shí)已經(jīng)算好了,接著輸出就行。

給MUX信號(hào),使能加法結(jié)果輸出,可以讀出是0x2E58,0x0512+0x2946的確等于0x2E58,計(jì)算正確。

給MUX信號(hào),使能減法結(jié)果輸出,可以讀出是0x1DBCC,0x0512-0x2946的確等于0x1DBCC,計(jì)算正確。
最后用CY(進(jìn)位標(biāo)志位,1代表進(jìn)位或借位)測(cè)試并對(duì)電路計(jì)時(shí),0xFFFF+0x0000+1=0x10000用時(shí)100tick,0x0000-0x0000-1=0x1FFFF用時(shí)104tick,忘記截圖了,懶得重做了,反正就這讀數(shù)。(略略略略略~)

ALU, ALU,沒有LU能叫ALU嗎(誤)。那么就動(dòng)手吧,邏輯運(yùn)算共如下幾種:
OR, AND, XOR,?NOT, TEST
那就實(shí)現(xiàn)NOT, OR, XOR, AND吧。

先簡單設(shè)計(jì)一下,基本上就是對(duì)算術(shù)運(yùn)算單元做了億點(diǎn)點(diǎn)的改動(dòng),從上到下輸出的是:
非A,A或B,A異或B,A且B
從右到左AB分別輸入了00, 01, 10, 11??聪陆Y(jié)果:老鐵,沒毛病。接下來復(fù)制粘粘粘貼就行了。
和AU一起合影一下,這下只要用膠水(誤)粘起來(大霧)就是ALU了。AU和LU合影。

還好他們都在兩個(gè)結(jié)構(gòu)方塊內(nèi)存下來了,沒有4個(gè)已經(jīng)很仁慈了。(草(雙語))

在仔細(xì)回想回想指令集,有一組不好歸類到邏輯或者算數(shù)運(yùn)算的:
ROL, ROR, RCL, RCR, SHL, SHR, SAL, SAR
都實(shí)現(xiàn)吧,不過,實(shí)現(xiàn)一個(gè)參數(shù)為1而不是CL的好像更簡單。那就實(shí)現(xiàn)吧,上層是右移,下層是左移。放圖!









然后載入0xAA55+CY試試。








嗯,那么就到這里……
“橋豆麻袋,SHR 0x55AA+CY,1;?SAR 0x55AA+CY,1和?SHR 0xAA55+CY,1是不是算錯(cuò)了?”
這位朋友,如果這個(gè)是你獨(dú)立發(fā)現(xiàn)的,恭喜你,答對(duì)了,的確算錯(cuò)了。因?yàn)殡娐啡匀粚Y右移了,這是不合理的。于是我稍稍修改了一下,放圖!(之前有的實(shí)驗(yàn)由于各種原因就沒有必要再做了)






那么再放幾張圖給你們看看這玩意到底長啥樣。




那么就到……
“橋豆麻袋,有的時(shí)候明明不該改變CY的你輸出怎么變了?”
不會(huì)吧不會(huì)吧,我隨手給個(gè)CY你就真的去更新狀態(tài)寄存器了????不會(huì)吧不會(huì)吧不會(huì)吧!?。。r且乘除法過程中也會(huì)用這個(gè),不會(huì)這也想動(dòng)動(dòng)CY吧,不會(huì)吧不會(huì)吧不會(huì)吧)