Day 2 - Continuous / Procedural Assignment
·
IDEC 교육/Verilog HDL
Continuous Assignment (연속 할당)assign문을 사용하여 Net Type에 값을 할당combinational logic를 구현할 때 사용모든 연산이 병렬로 수행예시wire A;assign A = (B|C)&D;Procedural Assignment (절차적 할당)always 또는 initial 내부에서 사용always 같은 경우 always @ (*)에서 *에 해당하는 신호가 트리거될때 "순차적"으로 실행주로 reg Type 변수를 대상으로 함Blocking Assignment (=)한 문장 실행 후 다음 문장 실행Nonblocking Assignment (모든 할당 동시에 실행예시always @(posedge clk) begin out =, 같은 경우 섞어서 한 블록에서 사용..
Day 1 - About HDL
·
IDEC 교육/Verilog HDL
HDL: Hardware Description LanguageVerilog: CLanguage 기반System Verilog: C++Language 기반 - (Verilog 2001의 super-set)기타 문법은 HDLBits에 문제를 풀면서 정리중
Day 5 - ARM7(Assembly)
·
IDEC 교육/Embedded C
ARM7 Reference해당 링크에서 레퍼런스 파일을 받을 수 있다.ARM7 Quick Card해당 링크에서 짧게 요약된 버전을 받을 수 있다.현재 Keil과 Segger 툴을 사용중이고, Assembly는 Segger Studio를 사용중이다.C와 Assembly 동시 사용main.c에서 assem.s라는 assembly 파일에 정의된 함수를 불러와서 쓸 수 있는데DoAdd라는 함수를 assembly에서 정의하여 불러와서 사용하는 예시이다.main.c#include #include extern int DoAdd(int, int);int main(void) { printf("Program Started\n"); int a = DoAdd(3, -1); printf("Add: %d\n", a); p..
Day 4 - Memory Endian
·
IDEC 교육/Embedded C
Big EndianHigh Order Byte: 낮은 주소에 기록ADDR | 0x123456780x100 | 0x120x101 | 0x340x102 | 0x560x103 | 0x78Little EndianLow Order Byte: 낮은 주소에 기록ADDR | 0x123456780x100 | 0x780x101 | 0x560x102 | 0x340x103 | 0x12
Day 3 - 외부 변수 및 함수 참조
·
IDEC 교육/Embedded C
Extern 선언다음 예시와 같이 extern을 통해 외부 변수, 외부 함수 선언을 할 수 있다.extern int gVar;, extern void func(void);너무 많은 extern으로 인한 코드는 가독성이 떨어지고, 특히 외부 변수를 직접적으로 수정하는건 지양해야함
Day 3 - Structure
·
IDEC 교육/Embedded C
Structure(구조체)서로 다른 형태의 변수들을 하나의 형태로 묶은 "자료구조"c1, s1, i1 순으로 배치를 할 경우,첫 4 Byte의 영역안에 c와 s가 모두 들어 갈 수 있으므로, 총 8 Byte를 사용하게 된다. c1, i1, s1 순으로 배치를 할 경우, 각각 4 Byte, 총 12 Byte를 사용하는 것으로 보여지게 된다.이는 ARM이나 기타 프로세서들의 Word Allignment 때문(4 Byte를 기준으로 Read)으로 메모리의 낭비가 일어난다. 이처럼 순서로 메모리의 최적화를 할 수 도 있으나,#pragma pack(1)과 같이 Packing을 사용하여 빈칸이 없게 붙이는 것도 가능하다.이는 총 7 Byte를 사용하게 된다.이렇게 정의된 struct는 다른 자료형과 같이 사용이 가..