【正文】
5或AR中,二進(jìn)制輸入,高電平有效。pc_clr|ld|en的組合,分別代表地址計(jì)數(shù)器PC的清零(pc_clr)、裝載(pc_ld)和計(jì)數(shù)使能信號(hào)(pc_en),二進(jìn)制輸入,低電平有效。信號(hào)we和rd的組合,分別代表對(duì)ram的讀(we)與寫(rd)的操作,二進(jìn)制輸入,高電平有效k [7]~ k [0],數(shù)據(jù)輸入端信號(hào),十六進(jìn)制輸入。d[7]~d[0],數(shù)據(jù)輸出中間信號(hào),十六進(jìn)制雙向信號(hào)。d [7] result ~d[0] result,最終的數(shù)據(jù)輸出信號(hào),十六進(jìn)制輸出。ar[7]~ ar[0],地址寄存器AR的輸出結(jié)果,十六進(jìn)制輸出。pc [7]~ pc [0],地址計(jì)數(shù)器PC的輸出結(jié)果,十六進(jìn)制輸出。以在01H單元中寫入05H、02H單元中寫入0AH并進(jìn)行【(A加B)減(非A與B)加B】為例:1)初始狀態(tài):bus_sel=11111,alu_sel=00000,ld_reg=00000,pc_sel=100,we_rd=00,k=00H,總線上無(wú)數(shù)據(jù),呈高阻態(tài)。2)讀取01H單元的05A:① 置數(shù)法PC=01H:bus_sel=01111,pc_sel=101 ② PCAR:bus_sel=11110,ld_reg=00001 ③ 讀01H單元的數(shù)據(jù)放入R1中:bus_sel=11111,ld_reg=10000,we_rd=01 3)讀取02H單元的0AH:① PC+1,PCAR:bus_sel=11110,ld_reg=00001,pc_sel=111 ② 讀01H單元的數(shù)據(jù)放入R2中:bus_sel=11111,ld_reg=01000,we_rd=01 4)將地址加到03H :bus_sel=11110,ld_reg=00001,pc_sel=111 5)驗(yàn)證數(shù)據(jù)并運(yùn)算: bus_sel=11101 ① 讀取R1中的數(shù)據(jù):alu_sel=010000,得到R1=05H ② 讀取R2中的數(shù)據(jù):alu_sel=101010,得到R2=0AH ③ 計(jì)算(A加B)結(jié)果存于R4中:alu_sel=011001,ld_reg=00100,結(jié)果為0FH ④ 計(jì)算(非A與B)結(jié)果存于03H單元中:alu_sel=100010,we_rd=10,結(jié)果為0AH ⑤ 計(jì)算((A加B)加B)結(jié)果存于04H單元中:l R4R1:bus_sel=10111,ld_reg=10000 l PC+1,PCAR:bus_sel=11110,ld_reg=00001,pc_sel=111 l 計(jì)算((A加B)加B)結(jié)果存于04H單元中:bus_sel=11101,alu_sel=011001,we_rd=10 ⑥ 計(jì)算(((A加B)加B)減(非A與B))結(jié)果存于05H中:l((A加B)加B)R1:bus_sel=11111,ld_reg=10000,we_rd=01 l(非A與B)R2:216。 PC=03H:k=03H,bus_sel=01111,pc_sel=101 216。 PCAR:bus_sel=11110,ld_reg=00001 216。(非A與B)R2:bus_sel=11111,ld_reg=01000,we_rd=01 l PC=05H:216。 PC=05H:k=03H,bus_sel=01111,pc_sel=101 216。 PCAR:bus_sel=11110,ld_reg=00001 ll(((A加B)加B)減(非A與B))結(jié)果存于05H中:bus_sel=11101,alu_sel=000110,we_rd=10 最后結(jié)果為0FH。結(jié)論:本實(shí)驗(yàn)的設(shè)計(jì)能結(jié)合了運(yùn)算器和存儲(chǔ)器,能實(shí)現(xiàn)在mif文件中進(jìn)行初始化,將固定地址單元中存儲(chǔ)的數(shù)據(jù)讀取到運(yùn)算器中進(jìn)行(((A加B)加B)減(非A與B))的運(yùn)算并將結(jié)果存于指定的內(nèi)存單元中,與實(shí)驗(yàn)要求一致,故電路設(shè)計(jì)正確。二、實(shí)驗(yàn)日志預(yù)習(xí)疑問解答:1.通路是干嘛的?在數(shù)字系統(tǒng)中,.通路如何實(shí)現(xiàn)其功能?在這次的實(shí)驗(yàn)中,數(shù)據(jù)通路主要是由運(yùn)算器部分和存儲(chǔ)器部分組成的,通過運(yùn)算器的運(yùn)算結(jié)合存儲(chǔ)器在mif文件的中的操作進(jìn)行數(shù)據(jù)的傳輸與存儲(chǔ),3.書上的存儲(chǔ)器部分總線開關(guān)接在高電平上,是不是錯(cuò)了? 事實(shí)證明沒有接錯(cuò).思考題:1. 畫數(shù)據(jù)通路電路圖時(shí),如何連結(jié)單一總線? 如圖:ALU模塊的sw_bus依然連接bus_sel,. 如何統(tǒng)一兩個(gè)模塊的總線輸入端k[7..0]及inputd[7..0]?答:如圖: 輸入放在運(yùn)算器部分,存儲(chǔ)器部分無(wú)輸入,存儲(chǔ)器部分的數(shù)據(jù)要么來自總線傳輸,:。直接生成該工程的符號(hào)文件,連接起來,但是仿真有問題。幾乎是在每一次和總線交換數(shù)據(jù)的時(shí)候都得不到正確的值。下面是解決的過程:我懷疑是兩個(gè)模塊之間通過總線傳輸?shù)臄?shù)據(jù)沒有傳輸成功,于是把a(bǔ)lu模塊的d引了一個(gè)輸出端口d_alu,從ram模塊的d引出了一個(gè)輸出端口d_ram,在仿真波形圖上,然后就可以看到了數(shù)據(jù)到達(dá)總線上了,而且這個(gè)時(shí)候d的值也能看到了,只是后面的最后一個(gè)讀操作出來的數(shù)據(jù)不對(duì),本來應(yīng)該是寫進(jìn)去的07,但現(xiàn)在是17,再仿真就會(huì)變成別的數(shù)據(jù)。,我以為存儲(chǔ)器部分的sw_bus連在高電平上是錯(cuò)的,然后又連到了bus_sel[4],所以得到了上一個(gè)部分的仿真結(jié)果,后來不研究了一下那個(gè)高電平,發(fā)現(xiàn)是用來處理單一總線問題的,就改成了與書上一樣的圖,我以為上面出現(xiàn)的錯(cuò)誤結(jié)果和這個(gè)有關(guān),改了之后波形圖有變化,但是,:問題解決了~原因是周期太短,計(jì)算結(jié)果還來不及存入到內(nèi)存單元中,把寫入內(nèi)存的時(shí)間周期延長(zhǎng)一個(gè)周期結(jié)果就出來了。電路本身沒有問題。實(shí)驗(yàn)心得: