Quartus Prime 하드웨어 실험 개발(DE2-115 보드) 실험 2 기능 조정 가능한 합성 타이머 설계

실험 2 기능 조절 가능한 합성 타이머의 설계

  • 목적
  1. QuartusII와 같은 실험 도구의 입력, 합성, 시뮬레이션 및 다운로드 사용을 마스터하십시오.
  2. DE2 개발 버전의 장치 기능 및 사용 방법을 마스터하십시오.
  3. Verilog HDL 순차 논리 시스템 설계의 주요 방법 및 기술을 마스터합니다.
  4. EDA 설계의 방법과 프로세스를 마스터하고 적용
  • 미리보기 요구 사항
  1. QuartusII 및 기타 분야 배포 및 다운로드 방법 및 프로세스 이해
  2. 개발 보드의 입력 및 출력 디스플레이 리소스의 작동 특성 이해
  3. 보드 설계, 개발 및 테스트의 방법론 및 프로세스 이해
  • 실험 요구 사항

조정 가능한 합성 타이머를 설계하십시오. 특정 기능:

  1. 시, 분, 초를 표시하고 영점 조정 기능을 제공합니다. 7 세그먼트 튜브 또는 LCD 화면에 표시되는 24/12시간 모드 전환 기능을 고려할 수 있습니다.
  2. 초, 분, 시를 별도로 수정할 수 있으며 두 자리 전체 수정을 수정하거나 각 비트를 개별적으로 수정할 수 있습니다.
  3. 시간별 계시 기능은 전체 시간을 특정 형태의 LED로 나타낼 수 있습니다.
  4. 알람 시계 기능, 특정 시간을 설정하고 해당 시간에 특정 LED 표시와 함께 알람 시계를 표시합니다. 알람 시계의 지속 시간에주의를 기울이고 게으른 알람 시계 모드를 참조 할 수도 있습니다.

초기 작업은 실험 1과 거의 유사합니다. 자세한 내용은 실험 1 링크 를 참조하십시오. Quartus Prime 하드웨어 실험 개발(DE2-115 보드) 실험 1 CPU 명령어 계산기 설계

실험 2 에서는 핀에 해당하는 값을 교체 해야 한다는 점에 유의해야 하며, 특정 값 테이블은 다음과 같이 연결됩니다.

FPGA 하드웨어 실험 2 기능 조정 가능한 합성 타이머 설계 실험 설계 핀 설정-데이터 세트 문서 리소스-CSDN 다운로드

본문 코드:

module shizhong(clkin,key0,hex0,hex1,hex2,hex3,hex4,hex5,hex6,hex7,KEY0,KEY1,key17,key16,key15,LEDR,LEDG,in,key14,key13,key12);
input clkin;
input key0,key17,key16,key15,key14,key13,key12;
input[6:1] in;
input KEY0,KEY1;
reg clk=0;
output reg[6:0] hex0,hex1,hex2,hex3,hex4,hex5,hex6,hex7;
output reg[7:0] LEDR,LEDG;
reg[7:0] out2,out3,out4,out5,out6,out7; 
reg[7:0] second;
reg[7:0] minute;
reg[7:0] hour;
reg[7:0] second1;
reg[7:0] minute1;
reg[7:0] hour1;
integer N=25000000;
integer i=0;
reg[16:0] naozhong=0;
reg[16:0] s=0;
integer a=86400;

always@(posedge clkin) //分频
begin
if(i==N)
	begin
		i=0;
		clk=~clk;
	end
else i=i+1;
end

always@(posedge clk)
begin
if(key0) s=0; //置零
else 
//计数
begin
//整点报时
if(s%3600==0)
begin 
LEDR=8'b11111111;
end
else
	begin
		LEDR=8'b00000000;
		s=(s+1)%a;
	end
if(key17&&key16==0&&key15==0) //调整小时
	begin
		if(KEY0==0)s=(s+3600)%a;
		else if(KEY1==0)s=(s-3600)%a;
		else s=s%a;
	end
else if(key17==0&&key16&&key15==0)   //调整分钟
	begin
		if(KEY0==0)s=(s+60)%a;
		else if(KEY1==0)s=(s-60)%a;
		else s=s%a;
	end
else if(key17==0&&key16==0&&key15)   //调整秒
	begin
		if(KEY0==0)s=(s+1)%a;
		
		else if(KEY1==0)s=(s-1)%a;
		else s=s%a;
	end
end
end


always@(key17,key16,key15,s)
begin
//闹钟
if(key17==1&&key16==1&&key15==1)
	begin
		naozhong = 0;
		if(key12)naozhong=naozhong+in;
		else if(key13)naozhong=naozhong+in*60;
		else if(key14)naozhong=naozhong+in*3600;
		else naozhong=naozhong;

		second1=naozhong%60;
		minute1=naozhong/60%60;
		hour1=naozhong/3600;
		out7=hour1/10;
		out6=hour1%10;
		out5=minute1/10;
		out4=minute1%10;
		out3=second1/10;
		out2=second1%10;
		hex7=seven(out7);
		hex6=seven(out6);
		hex5=seven(out5);
		hex4=seven(out4);
		hex3=seven(out3);
		hex2=seven(out2);
		hex1=7'b1111111;
		hex0=7'b1111111;
	end
else
	begin
		second=s%60;minute=s/60%60;hour=s/3600;
		out7=hour/10;out6=hour%10;
		out5=minute/10;out4=minute%10;
		out3=second/10;out2=second%10;
		hex7=seven(out7);
		hex6=seven(out6);
		hex5=seven(out5);
		hex4=seven(out4);
		hex3=seven(out3);
		hex2=seven(out2);
		hex1=7'b1111111;
		hex0=7'b1111111;
	if(s==naozhong)LEDG=8'b11111111;
	else LEDG=8'b00000000;
	end

end


function[6:0] seven;
input [7:0] din;
case(din)
	4'h0:seven=7'b1000000;
	4'h1:seven=7'b1111001;
	4'h2:seven=7'b0100100;
	4'h3:seven=7'b0110000;
	4'h4:seven=7'b0011001;
	4'h5:seven=7'b0010010;
	4'h6:seven=7'b0000010;
	4'h7:seven=7'b1111000;
	4'h8:seven=7'b0000000;
	4'h9:seven=7'b0010000;
	default:seven=7'b1111111;
endcase
endfunction
endmodule

하드웨어 테스트:

0으로 재설정

제어 시간

알람 시계를 설정하면 시간이 다 되고 녹색 표시등이 켜집니다.

 

추천

출처blog.csdn.net/yyfloveqcw/article/details/124362870