최근 자동차 내용만 올리다가 간만에 학습내용을 쓰는듯 하다.

Xilinx의 VIVADO HLS관련하여 개인적으로 테스트한 내용을 정리겸 추후 복기하기 위해 작성하였다.

 

VIVADO HLS를 처음 접하면서

C to HDL의 For 루프에서 옵션 처리에 따른 속도 테스트를 진행 하였다.


테스트 코드 기능은 12채널 MUX이며,

12개의 입력신호에서 다중 채널로 출력이 가능 하도록 설계 되었다.

( 입력 : 출력 / 설정에 따라 1:n 또는 1:1 출력을 대응함.)


FPGA를 C로 구현하니 격세지감이다

(뭐 이미 한참 전에 나오긴 했지만 ㅋ)

 

추가적으로 테스트 진행중 참고 및 주의해야할 사항은 아래와 같다.

참고사항

1. AXI-LITE 를 사용하면 Latency 가 소폭 상승한다

2. AXI-LITE를 사용하고 각 제어 변수의 버스(bundle 옵션)를 다르게 적용하면 Latency가 일정부분 감소한다.

3. Time Critical 영역에서는 AXI interface 를 피하고 Block Level IO Protocol 설계방식이 유리해 보인다

(현재 내가 해본 수준에서는...)

4.설계한 IP에 Block Level IO Protocol을 사용하여 제어하려면(interface) Microblaze에서 AXI-GPIO IP를 미친듯이 뽑아내자(읭?????)

 

주의사항

1. 인터페이스용의 결과 리턴용 참조 변수는 함수 마지막 실제 Function의 리턴 직전에 넣을 것.

   (Co Simulation이 stall 현상이 발생 - User guide에서 Co - Simulation의 멈춤을 stall 이라고 명기함.)

2. Co Simulation은 Velilog로 진행 할것. (VHDL 진행시 진행이 되지 않는 경우가 발생)

사용한 VIVADO 버전은 2018.3 이다.

 

적용 테스트 코드는 블로그 하단에 첨부

Pipeline 적용

 

unroll 적용


For 문 없이 풀어서 적용



결과

입력에서 출력까지의 지연시간 (Co- simulation을 통한 Timing 확인)

for문 pipeline 적용 : 140ns

for문  pipeline 미적용 : 255ns

for문  unroll 적용 : 60ns

Fro문 없이 적용 : unroll 과 동일  60ns

결론  : unroll 적용시 시간 이 단축되며 FOR 문없이 풀어 적용한것과 동일한 효과를 나타냄

현 구조에서는 unroll 적용 가능 구조였으며 상황에 따라 소모 clock은 다를 것으로 보여짐.

 

 

파이프라인 적용 : Verilog

파이프라인미적용 : VHDL




unroll 적용



For 문 없이 적용


######AXI-LITE 인터페이스 사용에 따른 Latency 비교 #############

AXI -LITE 사용 리턴 미사용



AXI -LITE 사용 리턴 사용



AXI -LITE 사용 리턴 사용 / register 적용



AXI -LITE 사용 리턴 사용 / register 적용 / 동일 버스(bundle) 적용


AXI -LITE 사용 리턴 사용 / register 적용 / 개별 버스라인(bundle) 적용

 

MUX용 코드

//mux 12ch

 

// in12 out12

// select sel_led -> sel_sen

// Designed by S.Jung

// 2019--09-18

#include <stdio.h>

#include "ap_cint.h"

 

#define NofLED 12

 

 

typedef int12 CH_Width;

 

char LED_CH_SEL_SEN[NofLED];

char SELECT_LED, SELECT_CH;

CH_Width mux12ch(int *sel_led, int *sel_sen, int *set, CH_Width *out_monitor,CH_Width sen_in)

//CH_Width mux12ch(char *sel_led, char *sel_sen, char *set,CH_Width sen_in)

{

/*

#pragma HLS INTERFACE port=return

#pragma HLS INTERFACE s_axilite port=set bundle=a

#pragma HLS INTERFACE s_axilite port=sel_sen bundle=b

#pragma HLS INTERFACE s_axilite port=sel_led bundle=c

#pragma HLS INTERFACE s_axilite register port=out_monitor bundle=d

*/

CH_Width return_ch=0;

char i;

 

 

if ((*sel_led < NofLED) && (*set == 1))

{

LED_CH_SEL_SEN[*sel_led] = *sel_sen;

}

 

else

{

for(i=0;i<NofLED;i++)

{

#pragma HLS UNROLL

return_ch |= ((sen_in >> LED_CH_SEL_SEN[i]) &0x01 ) << i;

}

}

 

 

 

*out_monitor = return_ch;

 

 

return return_ch;

 

 

}



Test Bench Code

#include <stdio.h>

#include "ap_cint.h"

typedef int12 CH_Width;

int main(void)

{

FILE*fp;

int sel_led=0;

int sel_ch=0;

int set=1;

int i=0;

CH_Width return_data=0;

CH_Width pt_data=0;

int pt_data_conv;

fp=fopen("result.dat","w");

return_data = mux12ch(&i, &i,&set,&pt_data,i);

//return_data = mux12ch(&i, &i,&set,i);

for (i=0;i<12;i++)

{

return_data = mux12ch(&i, &i,&set,&pt_data,i);

//return_data = mux12ch(&i, &i,&set,i);

fprintf(fp,"loop: %d return_data : %d\r\n",i,return_data);

}

set = 0;

for(i=0;i<120;i++)

{

return_data = mux12ch(&set,&set,&set,&pt_data,i);

//return_data = mux12ch(&set,&set,&set,i);

fprintf(fp,"loop :pointer data : rtndata  [ %d: %d : %d ] \r\n",i,pt_data,return_data);

//fprintf(fp,"loop : rtndata  [ %d : %d ] \r\n",i,return_data);

}

fclose(fp);

return 0;

}

 

####Co-Simulation ###########



########추가 참고 자료#########

인터넷에서 주워옴  

#FPGA, #HLS, #Co-Simulation, #VIVADO, #VIVADO HLS

크리에이티브 커먼즈 라이센스
Creative Commons License
2019/09/21 00:36 2019/09/21 00:36

댓글을 달아 주세요

1. 엔진오일 교체 (2019/03/29)

수리/교체 항목 : 엔진오일 /오일필터

작업장소 : 하남마이개러지

작업시간 : 0.5 시간.

 

1420,00Km

서킷 3세션 + 약 3000Km 주행후 교체

 

쉘힐릭스 울트라 0W40(7200원/L)에서 흉기터보씬 0W30으로 교체(4000원/L)

6리터 구매후 약 5.5L 주입완료

 

일단 느낌은 엄청엄청 가볍다. (엔진에 들이 부을때도 점도가 상당히 물같았음)

고알피엠에서 쉘힐릭스 울트라 보다  엔진 소리가 앙칼진 에미나이같다.

 

쉘힐릭스 울트라는 고RPM에서도 엔진이 잘 보호 되는 느낌같은 느낌이 들어서 좋았던것 같고(묵직한 느낌?)

터보씬은 좀더 터보면서 봐야 할거 같다.

불곰국 형 들이 극찬한 오일에다가 저렴한 흉기 순정 이라 일단 믿고 간다 ㄷㄷㄷㄷ

 

  

 

 

2. ECU 교체 (2019/04/07)

수리/교체 항목 : 순정 ECU로 교체

작업장소 : 내집앞 주차장

작업시간 : 20분.

운행중에 OBD를 이용하여 노킹센서를 모니터링 하고 다닌다.

ECU가 고급유 전용으로 맵핑되어있어 노킹에 민감하기 때문이다.

품질 낮은 S모 정유사 고급유를 쳐 먹이면 노킹센서에서 반응하여 점화 타이밍을 지각 시킨다.

GS 칼땡떙꺼는 고급유를 먹이면 노킹센서에 잡히지 않아 항상 GS 꺼만 먹여왔다.

 

허나 날씨가 슬슬 더워지면서 오일 온도가 올라갔고 (오일도 터보신으로 바꾼시점)

가속시에 노킹센서에서 점화 타이밍 보정이 발생 되기 시작했다.

 

인터넷을 뒤져 순정 ECU 미부착 제품을 판매하는 사람이 있어 17만원에 구매후 장착 하였다.

 

(ECU는 새제품에서 한번이라도 차량에 부착되었던 제품이 다른 차량에 부착시 시동이 걸리지 않거나 혹은 걸렸다가 꺼진다호 함

- 차량의 VIN 번호가 입력되어 매칭 실패시 운행 불가를 때린다고함)

 

 

  

 

 

3. 산소센서 / 노킹센서 교체(2019/04/19)

수리/교체 항목 : 산소센서 / 노킹센서

작업장소 : 하남마이개러지

작업시간 : 2시간.

순정 ECU로 교체하고 나니 계기판에 엔진 체크등이 발생하여 OBD로 조회하니 산소센서 및 노킹센서 문제가 발생되었다.

그도 그럴것이 고급유가 맵핑되었던 ECU는 2차 산소센서를 참고하지 않기 때문에 고장나도 펄티코드를 발생시키지 않았기때문이다.

 

근데 노킹센서 너는 왜 맛이갔늬?ㄷㄷ

 

엄청난 펄티코드가 뜨지만 산소센서랑 노킹센서 갈고 올클리어됨.

 

순정 ECU는 1차 산소센서를 바탕으로  연료 및 공기량 보정 이후

2차 산소센서에서 1차 산소센서로 부터 작동한 것들이 맞는지 피드백 용으로 동작된다.

엔진제어에 개입하는 센서는 아니지만 일종의 안전장치로 사용되는 것이다.

 

노킹센서는 알다시피 윗부분에 순정 ECU 교체 사유에 나왔듯이 노킹 발생 여부를 판단하여

엔진의 점화 시점을 지각 시키는 안전장치이다.

 

아무튼 이거 나가고 조수석쪽 노킹센서 맛탱이 가고. 아주 난리 염X 지X 났다 (딮빡)

 

산소센서 5만원 / 노킹센서 2.6만원

 

역시 하남 마이개러지에 방문하여 작업 하였고 퇴근후 방문이라 작업사진은 찍지 못하였다.

노킹센서는 엔진 헤드의 배기포트 아래 부분 (매니폴드 밑부분) 에 붙어있다.

교체해보니 노킹센서에서 액같은것이 터져 나와 굳어ㅓ있었다.

 

 

 

 

 

4.조수석 하체 암류 교체(2019/05/12)

레터럴암/텐션암 / 스테빌 링크 교체

작업 장소 : 하남 마이개러지

작업시간 :  4시간 30분

 

방지턱 이랑 울퉁불퉁한 길을 지나다니면 조수석 앞쪽에서 뚝뚝 소리가 난다.

스테빌 링크가 부츠가 터져서 소리가 났으며 조수석쪽 하체 부싱류들이 크랙이 진행되고 있던 상태였다.

일단은 교체하고 나서 핸들 떨리는 느낌도 상당히 줄었고 소음은 사라졌다.

 

 

레터럴 암과 / 스테빌 링크는 신쿱(2012년 이후 모델용) 제품으로 구매 하였다.

볼트류들도 피로누적을 감안하여 넉넉히 구매 하였다.

 

작업 사진은 아래부터

 

 

 

 

제품 사열과 함께 작업 시작전 사진 한방 박고

이때까지 헬 입성일줄은 몰랐음.

 

 

차량을 띄우고 바퀴 탈거

 

 

스테빌라이져는 풀러서 내려놓고 작업하면 용이하다.

해당 사진은 교체 이후 사진이지만  붉은 색 부분의 너트들을 풀러 내면 된다.

맨 왼쪽의 붉은색 사각형의 조인트들은 반드시 조인트 풀러를 챙겨서 작업하시라

 

 

아래 사진과 같은 조인트 풀러가 없어서 망치로 계속 떄리다하 레터럴 암은 뺏는데 텐션암이 안빠져서

개러지 사장님이 공구 빌려다 주셔서 겨우 작업을 마무리 하였다.

 

정비 지침서에 특수 공구라고 나와있는 부분은 반드시 확인 하여야 한다.

 

레터럴암 교체 부싱이 살짝 크랙이 생겨있는 상태였다.

 

 

 

쩔지 말라고 고착방지제를 쳐발쳐발 해준다.

 

텐션암 교채  상태가 썩 나빠보이진 않았으며 크랙이 진행될려고 함.

 

스테빌 링크 교체  이놈아는 부츠가 터지고 난리가 났다.

 

 

볼트류도 작업 하면서 다 신품으로 진행 하였다.

 

작업 완료 후 사진.

 

#젠쿱 하체, #레터럴암, #텐션암, #스테빌링크, #제네시스쿠페, #하남마이개러지, #마이개러지, #자가정비, #젠쿱 DIY, #FL 하체,

크리에이티브 커먼즈 라이센스
Creative Commons License
2019/05/13 01:19 2019/05/13 01:19

댓글을 달아 주세요

<< previous 1 2 3 4 5 ... 37 next >>