?? arbiter.cpp
字號:
/************************************************************************
* file name:
* description:
*
* modification history
* --------------------
* 2004-1-13 16:48:17, created by zhuwei
*/
/* includes----------------------------------------------------------- */
#include "arbiter.h"
/* defines------------------------------------------------------------ */
/* typedefs----------------------------------------------------------- */
/* externs------------------------------------------------------------ */
/* globals------------------------------------------------------------ */
/* forward declarations----------------------------------------------- */
void arbiter::reg_fun()
{
if(!rst_n.read())
{
state = STATE_0;
sel = 0;
}
else
{
state = new_state;
sel = new_sel;
}
}
void arbiter::comb_fun()
{
int v_req0 = req[0].read();
int v_req1 = req[1].read();
int v_req2 = req[2].read();
new_sel = 0;
switch(state)
{
case(STATE_0):
if(v_req0)
{
new_sel = 1;
new_state = STATE_1;
}
else if(v_req1)
{
new_sel = 2;
new_state = STATE_2;
}
else if(v_req2)
{
new_sel = 3;
new_state = STATE_3;
}
else
{
new_sel = 0;
new_state = STATE_0;
}
break;
case(STATE_1):
if(v_req1)
{
new_sel = 2;
new_state = STATE_2;
}
else if(v_req2)
{
new_sel = 3;
new_state = STATE_3;
}
else if(v_req0)
{
new_sel = 1;
new_state = STATE_1;
}
else
{
new_sel = 0;
new_state = STATE_0;
}
break;
case(STATE_2):
if(v_req2)
{
new_sel = 3;
new_state = STATE_3;
}
else if(v_req0)
{
new_sel = 1;
new_state = STATE_1;
}
else
if(v_req1)
{
new_sel = 2;
new_state = STATE_2;
}
else
{
new_sel = 0;
new_state = STATE_0;
}
break;
case(STATE_3):
if(v_req0)
{
new_sel = 1;
new_state = STATE_1;
}
else
if(v_req1)
{
new_sel = 2;
new_state = STATE_2;
}
else
if(v_req2)
{
new_sel = 3;
new_state = STATE_3;
}
else
{
new_sel = 0;
new_state = STATE_0;
}
break;
default:
new_sel = 0;
new_state = STATE_0;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -