FPGA 연구 노트
ROM 코어 호출 및 디버깅
1. ROM存储器IP核的使用
2. 创建.mif文件
3. In system memory content editor内存查看工具的使用
4. Signal tapII工具使用
5. Verilog 代码
6. Modelsim仿真
7. FPGA板级验证
ROM 코어 호출 및 디버깅
- 목표 : Quartus 소프트웨어에 제공된 ROM 코어를 호출하고 시스템 설계를 수행합니다.
- 현상 : 데이터 세트 (삼각 파형 테이블)가 FPGA의 IP 코어로 구축 된 온칩 롬에 저장됩니다. 개발 보드의 전원을 켜면 시스템이 롬에서 데이터를 읽고 데이터를 직접 출력하기 시작합니다. 병렬 포트를 통해. 신호 탭 II 소프트웨어를 통해 병렬 포트의 데이터를 실시간으로 캡처하여 표시합니다 (삼각 파형). 그런 다음 quartus 소프트웨어에 제공된 시스템 메모리 콘텐츠 편집기 도구를 사용하여 온라인 ROM의 데이터 (사인 파형)를 변경 한 다음 신호 tapII 도구로 캡처 한 파형 데이터를 다시 관찰합니다.
- 지식 포인트 :
- ROM 메모리 사용 IP 코어
.mif 파일 생성 - 시스템 메모리 내용 편집기 메모리보기 도구 사용
- Signal tapII 도구는
칩 노드 데이터 또는 외부 IO 포트 데이터를 직접 캡처하고 JTAG 포트를 통해 PC에 연결할 수있는 임베디드 로직 분석기 / 온칩 로직 분석기를 사용합니다. PC의 quaturs 소프트웨어는 JTAG 라인을 통해 온칩 로직 분석기와 통신하고 온칩 로직 분석기가 캡처 한 설계의 노드 정보를 실시간으로 PC로 전송하는 신호 탭 II 소프트웨어를 제공합니다. 그리고 PC는 singal Tap II를 사용합니다. 소프트웨어는 데이터를 표시합니다.
1. ROM 메모리 IP 코어 사용
- (1) .IP 카탈로그, ROM 검색, ROM 두 번 클릭 : 1- 포트, 요구 사항에 따라 데이터 너비, ROM 메모리 및 기타 정보를 설정하고 다음을 클릭합니다.
- (2) 필요에 따라 등록 포트를 선택하고 다음을 클릭하십시오.
- (3) .mif 파일을 선택하고 다음을 클릭합니다.
- (4) 다음을 클릭하십시오.
- (5). 마침 클릭
- (6) .qip 파일 생성, 우클릭, 최상위 엔티티로 설정, 분석 및 합성
- (7). 테스트 벤치 작성, 시뮬레이션 검증 기능
2. .mif 파일 생성
- (1) 새 파일을 만들고 메모리 초기화 파일을 선택한 다음 확인을 클릭합니다.
- (2) 비트 폭과 메모리 깊이를 설정하고 확인을 클릭하여 다음 파일을 생성합니다.
- (3) 필요에 따라 메모리 값을 변경 한 후 파일을 클릭하고 다른 이름으로 저장하고 이름을 설정하고 .mif 파일을 프로젝트 폴더에 저장하면 .mif 파일 설정이 완료됩니다.
3. 시스템 메모리 내용 편집기 메모리보기 도구 사용
- (1). 도구-> 시스템 메모리 내용 편집기
- (2). 다음 인터페이스가 표시되면 읽기를 클릭하여 ROM의 데이터를 읽습니다.
- (3) .ROM을 마우스 오른쪽 버튼으로 클릭하고 파일에서 데이터 가져 오기를 선택하십시오.
- (4) 편집 한 .mif 파일을 선택하고 열기를 클릭합니다.
- (5). 쓰기를 클릭하면 파일의 데이터가 ROM에 기록됩니다.
- (6). 기록 된 데이터는 신호 tapII에 표시됩니다.
4. 신호 tapII 도구 사용
- (1) 새 파일을 생성하려면 신호 탭 로직 분석기 파일을 클릭합니다.
- (2) .clk 신호를 순서대로 추가하십시오.
- (3). 순서대로 관찰 할 신호 추가
- (4) 설정이 완료되면 파일을 클릭하고 이름과 경로를 설정 한 후 저장합니다.
- (5) 설계에 따라 저장 영역의 깊이를 설정하고 .stp 파일을 생성합니다.
- 로직 애널라이저는 샘플링 클럭이 샘플링 할 신호의 속도보다 높은지 확인합니다.
- 샘플 깊이 :
메모리 의 깊이입니다 . 캡처 된 데이터는 내부 메모리와 동일합니다. 연속 캡처에는 관찰 데이터가 필요합니다. 속도가 매우 빠르기 때문에 관찰 할 모든 데이터를 먼저 메모리에 저장 한 다음 메모리 JTAG 케이블을 통해 컴퓨터에 전송하여 실시간으로 표시합니다. 그렇지 않으면 JTAG 자체가 고속이 아니기 때문에 50MHz로 직접 샘플링 된 데이터를 전송할 수 없으므로이 저장 방법을 사용하여 속도를 줄입니다.
- (6) 다음 순서로 로직 애널라이저를 실행합니다.
- (7). 지속적인 실시간 탐지 데이터
- (8) 실시간 데이터 형식을 선 그래프 표시로 설정하면 모양은 다음과 같습니다.
5. Verilog 코드
//----top---------------------------------------
module rom_top(
input clk,
input rst_n,
output [7:0] q
);
reg [7:0] addr;
rom uut(
.address(addr),
.clock(clk),
.q(q)
);
always@(posedge clk or negedge rst_n)
if(!rst_n)
addr <= 8'd0;
else
addr <= addr + 8'd1;
endmodule
//----testbench------------------------------
`timescale 1ns/1ns
`define clock_period 20
module tb_rom;
reg clk;
reg [7:0] addr;
wire [7:0] q;
rom uut(
.address(addr),
.clock(clk),
.q(q)
);
integer i;
initial clk = 1;
always #(`clock_period/2) clk = ~clk;
initial begin
addr =8'd0;
for(i=0;i<2550; i=i+1)begin
#(`clock_period);
addr = addr + 8'd1;
end
#(`clock_period*50);
$stop;
end
endmodule
6. Modelsim 시뮬레이션
-
시뮬레이션 파형 디버깅
신호를 마우스 오른쪽 버튼으로 클릭하고 형식-> 아날로그 (automatixc)를 선택한 다음 신호 값을 아날로그 값으로 변환합니다. -
삼각형 파형
- 사인파
4. FPGA 보드 레벨 검증
- 파형은 삼각형에서 사인 모양으로 변환됩니다.
[참고] : 개인 학습 노트, 실수가 있으면 알려주세요. 공손 해요 ~~~