当我调用该函数时,每次进入if
块时都无法进入else
块。每次从函数返回4'b1111
。
我尝试打印[3:0] data
。它给了我“xxxx”。
我该如何解决这个问题。
module workout(DATA1, OPCODE , OUTPUT);
input [7:0] DATA1;
input [3:0] OPCODE;
output reg [7:0] OUTPUT;
initial OUTPUT = func_call(DATA1);
function [3:0] func_call;
input [3:0]data;
begin
if(data[3:0] == 4'b0001)
func_call= 4'b0011;
else
func_call= 4'b1111;
endfunction
答案 0 :(得分:0)
主要问题是您使用try {
PackageInfo info = getPackageManager().getPackageInfo(
"theo.testing.facebookapp",
PackageManager.GET_SIGNATURES);
for(Signature signature:info.signatures){
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
System.out.println("KeyHash : " + Base64.encodeToString(md.digest(),Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
块来表示应该连续分配的内容。
initial
块仅在时间0开始。一旦块完成执行,它就不会再次启动。 initial
用于初始化和测试平台。 FPGA允许仅为零时初始化目的合成initial
。 IC不支持initial
进行综合(完善异步复位)。
initial
语句是连续的。 assign
块永久运行但有时间阻止程序语句(例如:always
,@*
)。
一种选择是将@(posedge clock)
更改为initial
或always @*
always @(DATA1)
或者通过删除always @* OUTPUT = func_call(DATA1);
并使用OUTPUT
语句
reg
成为有线类型
assign
另请注意,output [7:0] OUTPUT;
assign OUTPUT = func_call(DATA1);
为8位,DATA1
需要4位输入。 Verilog会允许它但你应该收到警告。最好指定要使用的位范围。示例:func_call