• 카테고리

    질문 & 답변
  • 세부 분야

    반도체

  • 해결 여부

    미해결

register 접근 및 제어 질문

24.04.15 17:02 작성 조회수 69

1

안녕하세요 맛비님.

  1. 아래와 같이 코딩을 할 경우 차이가 무엇인가요? 자료를 찾아보니 다르게 작성하는 경우가 있는데 어떻게 다르며, 활용할 수 있는지 궁금합니다.

assign leds = slv_reg0 [3:0]; 
assign sw[3:0] = slv_reg1;
  1. 위의 코드에서 스위치 4개가 slv_reg1의 0x43C00004;라는 주소에 할당이 되었다고 가정하겠습니다. 그렇다면 4개의 스위치의 주소를 각각 어떻게 접근하고 제어를 할 수 있나요? ON/OFF 상태에 따라 print하고자 합니다. 각각의 스위치 별 주소를 알고 싶습니다.

  2. ON/OFF 된 상태를 아래와 같이 제어를 할 수 있는것인가요?

char *out0 = (char *) 0x43C00000;
*out = 0xFF; // ON
*out = 0x00; // OFF

답변 2

·

답변을 작성해보세요.

0

안녕하세요 🙂

먼저 질문주신 내용은 수강생 개인의 코드 수정으로 미리 질문글 쓰실때 고지드렸듯이, 답변에 제약이 있음을 먼저 적어요. 양해부탁드려요.

A1. leds 와 sw 를 어떻게 사용하느냐에 따라 용도를 알 수 있습니다. 현재 올려주신 질문만으로는 제가 어떤 질문을 하시는지 잘 모르겠어요.

A2. 스위치 1개당 1 bit 로 활용한다고 하면, 0x43C00004; 주소에 할당된 32 bit data 중 4 bit 만 연결하시면 되겠네요.

A3. 실제 코드가 아닌 pseudo code 를 적어주신 거라면... 컨셉은 맞습니다.

즐공하세요 🙂

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.17

안녕하세요, 인프런 AI 인턴입니다.

질문하신 내용에 대해 답변드리기 전에 제공된 정보 중에서 답변과 직접적으로 관련된 내용을 찾을 수 없음을 알려드립니다. 제공된 정보는 주로 온라인 학습 플랫폼과 Spring Boot 문서에 관한 것으로, FPGA 설계나 Verilog 코딩 관련 질문에 직접적으로 답변할 정보가 포함되어 있지 않습니다.

그러나, 일반적인 지식을 바탕으로 코딩과 관련된 질문에 대해 간략히 답변드립니다.

  1. assign leds = slv_reg0 [3:0];assign sw[3:0] = slv_reg1; 코드의 차이는 slv_reg0의 하위 4비트를 leds에 할당하는 것과 slv_reg1의 값을 4비트 크기의 sw 벡터에 할당하는 것에 있습니다. 첫 번째 구문은 특정 레지스터의 일부 비트를 할당하는 경우에 사용하며, 두 번째는 전체 레지스터 값을 다른 변수에 할당할 때 사용됩니다.

  2. 하나의 레지스터에 여러 기능이나 장치의 상태를 매핑하는 경우, 특정 비트를 사용하여 각 장치의 상태를 제어합니다. 예를 들어 slv_reg1의 4개 비트가 각각 다른 스위치를 나타낸다면, 이 비트를 개별적으로 제어(읽기/쓰기)하여 각 스위치의 상태를 조작할 수 있습니다. 그러나 개별 스위치에 대한 “주소”는 따로 존재하지 않으며, 대신 주소 내의 특정 비트 위치를 통해 접근합니다.

  3. ON/OFF 상태의 제어는 제시하신 코드로 가능할 수 있습니다. char *out0 = (char *) 0x43C00000; 이 구문은 특정 메모리 주소로의 포인터를 생성하고, 이 포인터를 사용해서 해당 메모리 위치에 값을 쓰는 것으로 장치를 제어할 수 있습니다. 다만, 실제 적용 시에는 해당 장치가 이러한 방식의 제어를 지원하는지, 정확한 메모리 맵과 제어 로직을 이해하는 것이 중요합니다.

다시 말씀드리지만, 질문하신 내용에 대한 구체적인 답변을 제공하기 위한 정보가 부족함을 양해 바랍니다. 더 자세한 답변이나 FPGA 관련 더 구체적인 질문이 있으시다면, 관련 전문가나 해당 기술 문서를 참조하시기를 권장합니다.