module volume_into_key(keyup, keydown, reset, volume);
input keyup, keydown, reset;
output reg [7:0]volume;
wire keyen;
assign keyen=keyup^keydown;
always@(posedge keyen or posedge reset)begin
if(reset)
volume <= 8'hff;
else
if(keydown)begin
if(volume != 8'hff)
volume <= volume + 8'h01;
else volume <= volume; end
else
begin
if(volume != 8'h00)
volume <= volume + 8'hff;
else volume <= volume;
end
end
endmodule
카운터 이다. 얼마전 만든 Programmable gaim Amplifier에 SPI신호를 주려고
짠 코드중 일부이다.
합성은 Synplify를 사용하지만...
posedge keyen posedge keyup^keydown
빨간 문장과 파란 문장의 차이는 뭘까?
참고로 녹색문장은 신플리파이에서 복잡하다면서 합성안해!를 내밷는다.
쿼터스에서는 녹색문장으로 합성되야 하고, 신플리파이에서는 빨간문장으로 합성되야 한다.
쿼터스에서 빨간 문장으로 합성되면 카운터가 한쪽으로만 움직이는 XX같은 상황이 난다.
(XX같은 상황에서 always@내부 문장 수정되있다.)
왜 안되지 하고 정말.... Gate Level로도 코드를 짜보았다
(ㅠㅠ 왜 내가 플립플롭을 직접 그리고 해야되 ㅠㅠ
ASIC할것도 아닌데 ㅠㅠ 전공도 아닌데 취민데 ㅠㅠ)
그냥 맘편하게 behavior RTL 코딩을 해야겠다. 정신건강에 안좋다.
지금은 잘 된다.
FPGA는 적어도 Cyclone은 써야 되나 보다... MAX II도 이거 뭐 영...