<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 硬件描述語(yǔ)言Verilog HDL設計進(jìn)階之:使用函數實(shí)現簡(jiǎn)單的處理器

硬件描述語(yǔ)言Verilog HDL設計進(jìn)階之:使用函數實(shí)現簡(jiǎn)單的處理器

作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò ) 收藏

4.8典型實(shí)例8:使用實(shí)現簡(jiǎn)單的

4.8.1實(shí)例的內容及目標

1.實(shí)例內容

本實(shí)例使用設計一個(gè)簡(jiǎn)單8位,可以實(shí)現兩個(gè)8位操作數的4種操作。在設計過(guò)程中,使用了調用的設計方法。

本文引用地址:http://dyxdggzs.com/article/201706/348827.htm

2.實(shí)例目標

通過(guò)本實(shí)例,讀者應達到下面的一些目的。

·掌握使用Verilog設計的方法。

·掌握Verilog設計的一般方法。

4.8.2原理簡(jiǎn)介

發(fā)展到現在,已經(jīng)變成一個(gè)功能極其強大,設計也極為復雜的單元?,F在一顆小小的CPU的運算能力遠遠的超過(guò)了以前的超級計算機的能力。雖然處理器處理能力的提高和很多方面的因素有關(guān),可是處理器最終要完成的目標還是早期CPU設計時(shí)的那個(gè)目標,那就是使用操作碼實(shí)現對操作數的控制和計算。

在本實(shí)例中,實(shí)現的處理器是一個(gè)8位處理器,只實(shí)現簡(jiǎn)單的4種操作:相加、相減、操作數減1和操作數加1。通過(guò)這4種操作向讀者展示如何使用Verilog語(yǔ)言設計看似復雜的CPU單元。

當然,這個(gè)處理器只是一個(gè)算術(shù)單元,處理器還包括很多其他的功能,在此不進(jìn)行介紹,感興趣的讀者可以查閱相關(guān)的書(shū)籍,按照本實(shí)例提供的設計方向補充和完善這個(gè)處理器。

4.8.3代碼分析

下面給出這個(gè)處理器的Verilog源代碼,讀者可以將此處理器模塊實(shí)例化至自己的工程設計中。

module mpc(instr,out);
//端口說(shuō)明
input[17:0] instr; //輸入指令
output[8:0] out; //輸出結果
//內部信號說(shuō)明
reg[8:0] out;
reg func; //指令中提取出的操作碼的內部變量
reg[7:0] op1,op2; //從指令中提取的兩個(gè)操作數
//函數聲明
function[16:0] code_add; //函數的定義,返回一個(gè)17位的指令
input[17:0] instr; //函數的輸入,采用與模塊輸入同樣的命名,可不同
//函數內部信號說(shuō)明
reg add_func; //函數內部的操作碼變量
reg[2:0] code; //操作碼
reg[7:0] opr1,opr2; //兩個(gè)操作數

begin
code=instr[17:16]; //輸入指令instr的高2位為操作碼code
opr1=instr[7:0]; //輸入指令instr的低8位為操作數opr1
//通過(guò)case語(yǔ)句判斷操作碼的類(lèi)型,獲得操作數opr2
case(code)
2b00: begin
add_func=1;
opr2=instr[15:8]; //從instr中取第二個(gè)操作數
end
2b01: begin
add_func=0;
opr2=instr[15:8]; //從instr中取第二個(gè)操作數
end
2b10: begin
add_func=1;
opr2=8d1; //第二個(gè)操作數取為1,實(shí)現+1操作
end
2b11: begin
add_func=0;
opr2=8d1; //實(shí)現-1操作
end
endcase
code_add={add_func,opr2,opr1}; //函數的返回值
end
endfunction
//函數調用模塊
always @(instr) begin
{func,op2,op1}=code_add(instr); //調用函數
if(func==1)
out=op1+op2; //實(shí)現兩數相加或操作數1加1操作
else
out=op1-op2; //實(shí)現兩數相減或操作數1減1操作
end
endmodule



關(guān)鍵詞: VerilogHDL 函數 處理器 FPGA

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>