我是Verilog的新手,我被问到以下问题:
考虑a = reg[3:0]
,那么a
可以包含哪些值if(a)
将返回true
?
我不知道从哪里开始,尝试编译一些示例,但都失败了syntax problem
。
答案 0 :(得分:1)
撰写if (a !=0)
与撰写a
相同。由于if (a[0] != 0 | a[1] ! = 0 | a[2] != 0 | a[3] !=0)
是一个4位变量,因此您可以将其扩展为x
。因此任何位位置的1都使表达式成立。请注意,未知值z
或 @Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference ref= FirebaseDatabase.getInstance().getReference().child("users").child(user.getUid()).child("oj_goals");
ref.orderByChild("ojTag").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
OjGoal goal= dataSnapshot.getValue(OjGoal.class);
Log.d("inside onChildAdded",goal.getMe());
data.add(goal);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
//FIXME: the below code continues to execute even if the Firebase-call has not yet completed
//
Intent intent= new Intent("com.example.sj.keymeasures.BAR_CHART_DATA_PREPARATION_FINISHED");
/**
* https://stackoverflow.com/questions/43800772/does-variable-order-matter-while-parcel-read-write-operation-in-parcelable
*/
intent.putParcelableArrayListExtra("oj_goals",data);
Log.d("[Handler]","sendingBroadcast with size "+data.size());
sendBroadcast(intent);
stopSelf(msg.arg1);
}
作为具有相等/不等运算符的操作数会导致未知并被视为false。但是一个未知的或者真实的是真实的。
答案 1 :(得分:0)
reg
是用于声明变量类型的verilog关键字,您提供的表达式是非法 verilog表达式。您可以将a
声明为4位注册,如下所示:
reg[3:0] a;
以上使a
为4位向量。现在,verilog位可能有4种状态:0
,1
,x
和z
。因此,a
的4位中的任何一位都可以处于任何这些状态。现在你有256种可能的组合。如果忽略x
和z
个状态,则可以得到16个以小数表示的组合,为0到15.
true
表示a
中至少有一位是1
。在所有其他情况下,它将是错误的。