提问人:dkdk 提问时间:11/17/2023 更新时间:11/17/2023 访问量:27
FPGA MAX 10 DE10-Lite 使用 Quartus Prime 16.1 将 verilog 代码上传到开发板时出错 [已关闭]
FPGA MAX 10 DE10-Lite Error when uploading the verilog code to the board using Quartus Prime 16.1 [closed]
问:
我将下面的代码上传到 Quartus Prime 16.1 的 de10-lite。我做了引脚分配。
`timescale 1ns/10ps
//Lab-06 Part-1 main
module Lab06_1(KEY,SW,LEDR,HEX3,HEX2,HEX1,HEX0);
input [7:0]SW; //select A
input [1:0]KEY; //KEY0: reset KEY1: clock
output [9:0]LEDR; //display output (8:carry out, 9:overflow reg)
output [6:0]HEX3,HEX2,HEX1,HEX0;
wire [7:0]sum;
wire carry, overflow;
add add0(KEY[1],KEY[0],SW[7:0],sum[7:0],carry,overflow);
assign LEDR[7:0]=sum[7:0];
assign LEDR[8]=carry;
assign LEDR[9]=overflow;
dec_HEX H3(SW[7:4],HEX3);
dec_HEX H2(SW[3:0],HEX2);
dec_HEX H1(sum[7:4],HEX1);
dec_HEX H0(sum[3:0],HEX0);
endmodule
//add
module add(Clk,Reset_n,A,S,c,overflow);
input [7:0]A;
input Clk, Reset_n;
output reg [7:0]S=8'b0;
output reg c=1'b0;
output reg overflow=1'b0;
always @(posedge Clk or negedge Reset_n) begin
if(!Reset_n) begin
S=8'b0;
c=1'b0;
overflow=1'b0;
end
else begin
if(S[7] & A[7]) begin //(-) + (-) = (+)
{c,S}=S+A;
if(!S[7]) begin
overflow=1'b1;
end
end
else if(!S[7] & !A[7]) begin //(+) + (+) = (-)
{c,S}=S+A;
if(S[7]) begin
overflow=1'b1;
end
end
else begin
{c,S}=S+A;
overflow=1'b0;
end
end
end
endmodule
//HEX decoder(16)
module dec_HEX(SW,HEX);
input [3:0]SW;
output [6:0]HEX;
assign HEX=(SW==4'b0000)?7'b100_0000: //0
(SW==4'b0001)?7'b111_1001: //1
(SW==4'b0010)?7'b010_0100: //2
(SW==4'b0011)?7'b011_0000: //3
(SW==4'b0100)?7'b001_1001: //4
(SW==4'b0101)?7'b001_0010: //5
(SW==4'b0110)?7'b000_0010: //6
(SW==4'b0111)?7'b111_1000: //7
(SW==4'b1000)?7'b000_0000: //8
(SW==4'b1001)?7'b001_0000: //9
(SW==4'b1010)?7'b000_1000: //A
(SW==4'b1011)?7'b000_0011: //b
(SW==4'b1100)?7'b100_0110: //C
(SW==4'b1101)?7'b010_0001: //d
(SW==4'b1110)?7'b000_0110: //E
(SW==4'b1111)?7'b000_1110:7'b111_1111; //F
endmodule
此时,SW0 提高到 1,所有其他方法都设置为 0(输入为 8'b1),使用 KEY1 更改了 Clk。 预期的结果是,当我按一次 KEY1 时,LED0 亮起,当您按两次时,LED1 亮起,LED0 熄灭(与二进制数相同。每次按键一次,两次,...通过 LED 出来)。此操作必须继续,但当它实际操作时,LED 发出的值将如下所示:3、14、19、30。怎么了?
我使用
- 夸图斯 Prime 16.1
- DE10-精简版 (10M50DAF484C7G)
此时,SW0 提高到 1,所有其他方法都设置为 0(输入为 8'b1),使用 KEY1 更改了 Clk。 预期的结果是,当我按一次 KEY1 时,LED0 亮起,当您按两次时,LED1 亮起,LED0 熄灭(与二进制数相同。每次按键一次,两次,...通过 LED 出来)。此操作必须继续,但当它实际操作时,LED 发出的值将如下所示:3、14、19、30。怎么了?
答: 暂无答案
评论