JavaCard指令處理器的FPGA設(shè)計(jì)
3.5 Verilog表述的微碼處理器核心邏輯
下面是主控邏輯框架代碼的一部分。本段代碼體現(xiàn)了如何處理數(shù)據(jù)型微碼和指令型微碼,可以在YOUR_MICRO_CODE_INSTR處添加需要的微碼指令以及對應(yīng)的操作。
always@(posedge clk or posedge reset)
begin
if(reset)
begin
new_mcp[15:0]=init_ADDR;//初始化微碼
//序列首地址
{pop,push,alu_calc,memrd,memwr,load_mcp,hold_mcp,remap_mcp}=8′b00000000;
H_READED=1′b0;//表示是否讀過了一次
//數(shù)據(jù)型微碼
state[1:0]=EXEC_MC;
end
else
begin
case(state[1:0])
EXEC_MC:
begin//首先根據(jù)mcr的位15判斷是數(shù)據(jù)型
//微碼還是指令型微碼
if(mcr[15])//mcr中存放微碼,位15==1表示
//此微碼是數(shù)據(jù)型,先保存高8位,再低8位
begin
if(H_READED==1′b0)//首個(gè)數(shù)據(jù)型
//微碼,數(shù)據(jù)保存到高8位
begin
{mcdata[15:8]}=mcr[7:0];
//mcdata是內(nèi)部數(shù)據(jù)寄存器
H_READED=1′b1;
end
else
begin
{mcdata[7:0]}=mcr[7:0];
H_READED=1′b0;
end
end
else//表示此微碼是指令,根據(jù)后面的15位
//分支操作
begin
case(mcr[15:0])
YOUR_MICRO_CODE_INSTR://
begin
……//定義的微碼操作
end
……//其他微碼指令處理
endcase
end//end for mcr為指令處理
end
HLT://state[1:0]=HLT,宕機(jī)狀態(tài)處理
…
endcase//end for state[1:0]
end//end for reset
end//end for always@(posedge clk or posedge reset)
系統(tǒng)采用微碼實(shí)現(xiàn),用微碼序列控制讀取Java指令、存儲數(shù)據(jù),實(shí)現(xiàn)Java指令。JavaCard指令被解釋執(zhí)行的過程如下:
讀取JavaCard PC處的JavaCard指令至指令寄存器Instr,發(fā)出remap信號給微碼指針調(diào)整模塊MCPC,微碼指針寄存器MCP得到新的JavaCard指令對應(yīng)的微碼序列首地址,MCP的變化使微碼指令寄存器MCR變?yōu)樵撐⒋a序列的首個(gè)微碼指令,再由微碼處理器執(zhí)行此MCR中的微碼。
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號放大器
評論