在我之前的问题中,我曾问过我要设计一种装瓶系统,该装瓶系统将所需数量的药片装满瓶子。在我的项目的第1部分中,用户将按FPGA上的按钮来确定每个瓶子中将装入多少片药片,并显示所需的数字。这是我为我的项目编写的第1部分的代码,不知道为什么它会在模块part1中给出错误。
module count(clk,clr,cntEn,dout);
input clk,clr,cntEn;
output reg [8:0] dout ;
always@(posedge clk)
begin
if(clr)
dout<=0;
else if(cntEn)
dout<=dout+1;
end
endmodule
module sevenseg(num,dout);
input [3:0] num;
output reg [6:0] dout;
always@(*) begin
case(num)
0:dout=7'b1111110;
1:dout=7'b1100000;
2:dout=7'b1011011;
3:dout=7'b1001111;
4:dout=7'b1100110;
5:dout=7'b1101101;
6:dout=7'b1111101;
7:dout=7'b0000111;
8:dout=7'b1111111;
9:dout=7'b1101111;
endcase
end
endmodule
module part1(clk,clr,cntEn,dout);
input clk, clr, cntEn;
output dout;
wire w1;
begin
count count_1 (clk, clr, cntEn, w1);
sevenseg sevenseg_1(w1, dout );
end
endmodule
ljk07指出了错误,不需要模块1中的begin end,某些解析器可能只是忽略它们而其他则抛出错误。它应该是:
module part1(clk,clr,cntEn,dout);
input clk, clr, cntEn;
output dout;
wire w1;
count count_1 (clk, clr, cntEn, w1);
sevenseg sevenseg_1(w1, dout );
endmodule
我认为也应该指出,除非您受制于Verilog-95,否则最好采用ANSI样式的端口声明,因为这样会使代码维护更容易。
module part1(
input clk, clr, cntEn,
output dout
);
wire w1;
count count_1 (clk, clr, cntEn, w1);
sevenseg sevenseg_1(w1, dout );
endmodule
sevenseg模块还具有不完整的case语句,这将导致隐式闩锁。添加默认值或为num的所有选项完全指定输出:
module sevenseg(num,dout);
input [3:0] num;
output reg [6:0] dout;
always @(*) begin
case(num)
0:dout=7'b1111110;
1:dout=7'b1100000;
2:dout=7'b1011011;
3:dout=7'b1001111;
4:dout=7'b1100110;
5:dout=7'b1101101;
6:dout=7'b1111101;
7:dout=7'b0000111;
8:dout=7'b1111111;
9:dout=7'b1101111;
default: dout='b0;
endcase
end
endmodule
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句