이 7 세그먼트 표시 기능을 수행하려고합니다. 입력 "rn"은 내가 표시하고자하는 숫자이지만, ISE suite에서 시뮬레이션을 수행하는 동안 0 또는 1과 같을 때 "rn"을 인식 할 수 있습니다. 그보다 큰 값은 실패합니다 따라서 출력 seg [7 : 0]은 단지 8 비트입니다.잘못된 값을 반환하는 사례 문
module LED_7seg(clk, btn, rn, segA, segB, segC, segD, segE, segF, segG, segDP, anodes);
input clk, btn;
input [4:0] rn;
output [3:0] anodes;
output segA, segB, segC, segD, segE, segF, segG, segDP;
wire [4:0] rn_in;
reg [7:0] seg;
assign {rn_in[4], rn_in[3], rn_in[2], rn_in[1], rn_in[0]} = rn;
always @ (*)
case (rn_in)
(5'b00001 || 5'b10001) : seg = 8'b11111100; //0
(5'b00001 || 5'b10001) : seg = 8'b01100000; //1
(5'b00010 || 5'b10010) : seg = 8'b11011010; //2
(5'b00011 || 5'b10011) : seg = 8'b11110010; //3
(5'b00100 || 5'b10100) : seg = 8'b01100110; //4
(5'b00101 || 5'b10101) : seg = 8'b10110110; //5
(5'b00110 || 5'b10110) : seg = 8'b10111110; //6
(5'b00111 || 5'b10111) : seg = 8'b11100000; //7
(5'b01000 || 5'b11000) : seg = 8'b11111110; //8
(5'b01001 || 5'b11001) : seg = 8'b11110110; //9
(5'b01010 || 5'b11010) : seg = 8'b11101110; //10
(5'b01011 || 5'b11011) : seg = 8'b00111110; //11
(5'b01100 || 5'b11100) : seg = 8'b10011100; //12
(5'b01101 || 5'b11101) : seg = 8'b01111010; //13
(5'b01110 || 5'b11110) : seg = 8'b10011110; //14
(5'b01111 || 5'b11111) : seg = 8'b10001110; //15
default : seg = 8'b00000000;
endcase
assign {segA, segB, segC, segD, segE, segF, segG, segDP} = seg;
endmodule
도움이 될 것입니다.
첫 번째 두 경우가 같은 이유는 무엇입니까? – timrau
아, 그저 형식 일뿐입니다. – n00d1es
'rn_in' 버스를 만들 필요는 없으며 case 문에서 직접'rn'을 사용하십시오. 만약 당신이 그것을 필요로했다면, 당신은 단지'assign rn_in = rn; '을 할 수 있습니다. – nguthrie