FPGA의 적응성 및 조건 컴파일

조건 컴파일링과 매개 변수화 디지털 시스템 설계
먼저 이런 문제를 생각해 보자. 백조망구와 천조망구의 시차는 틀림없이 다르다. 그러면 망구는 하나뿐이고 프로그램은 하나뿐이다. 어떻게 같은 프로그램에서 두 인터페이스의 자체 적응을 만족시킬 수 있겠는가?FPGA에서 Adaptive Format를 구현하는 방법은 다음과 같습니다.적응을 실현하려면 메인 프로그램에 미리 컴파일된 코드를 추가한 다음에 밖에서 미리 컴파일된 문서를 만들고 프로그램이 메인 프로그램의 미리 컴파일된 코드로 실행될 때 사용 여부를 판단하여 적응 기능을 실현한다.
//         ,              
`ifdef...`endif	
`ifdef...`elsif...`elsif...`endif

조건 컴파일러 형식
//    
`include "docname.v"	//       
module test_gg(
	input			clk,
	input			rst_n,
	input			key,	//       
//    
`ifdef USE_KEY_Board	//         
	input	[3:0]	Row_i,//       
	output	[3:0]	Col_o,//       
`endif
`ifdef USE_IR			//           
	input			iIR,	//  iIR  
`endif	
	output			dout	//     
);
......//  

//       
`ifdef USE_KEY_Board
	wire	key_flag;
	wire	[3:0]key_value;
`elsif USE_IR
	wire	ir_Get_Flag;
	assign	ir_success = ~ir_Get_Flag;
`endif

`ifdef USE_KEY_Board
	assign key_value = 4'd1101;
`endif 

`ifdef USE_IR
	assign iraddr = 1;
`endif

//       
sys_crtl sys_crtl(
	.clk(clk),
	.rst_n(rst_n),
`ifdef USE_KEY_Board
	.key_flag(key_flag),
	.key_value(key_value),
`endif
`ifdef USE_IR
	.ir_Get_Flag(ir_Get_Flag),
`endif
	.freq_sel(freq_sel)
);


`ifdef USE_KEY_Board
	key_board key_board(
		.....
	);
`endif

//       
	always @(*)
		if(en=` Key_word0)
			...
		else if(en=` Key_word1)
			....
//   ,                 。Key_word1    ,     ,             。              Key_word ,      `Key_word       。    

패라메트릭 디지털 설계(예비 컴파일된 파일)
//docname      
`define USE_KEY_Board 1				//                 ,             
//`define USE_KEY_Detect 1
//`define USE_IR 1
`define user_ir_addr 16'hff00

//     
`ifdef USE_KEY_Board
	`define Key_word0 4'd0
	`define Key_word1 4'd1
	`define Key_word2 4'd2
    `define Key_word3 4'd3
	`define Key_word4 4'd4
    `define Key_word5 4'd5
    `define Key_word6 4'd6
    `define Key_word7 4'd7
`elsif USE_IR
	`define Key_word0 8'h5
    `define Key_word1 8'h4
    `define Key_word2 8'h3
    `define Key_word3 8'h2
    `define Key_word4 8'h1
    `define Key_word5 8'h0
    `define Key_word6 8'ha
    `define Key_word7 8'hc0
`endif

좋은 웹페이지 즐겨찾기