Verilog 코딩 중에 첫 번째 줄에 가장 많이 나오는 듯한 timescale 의 의미를 한 번 더 정리해 보자. `timescale 1ns/10ps 앞에 숫자는 작성중인 해당 파일 내에서 쓰이는 숫자들의 단위를 나타냄..즉 #2 이렇게 쓰여있다면 2ns를 나타냄 뒤의 숫자는 시뮬레이터에서 많이 쓰일 것 같은데 코딩에서는 별 효과가..무튼 소수점을 허용하려면 어디까지 해야할까 나타내야 하는데 그 때 쓰이는 최소 단위. 더욱 자세한 설명은 아래글 참고. 원본글이 업데이트가 된지 오래 되어서 여기에 로컬 복사해 둡니다. 저자분께 죄송합니다. [verilog] timescale에 대하여작성자 j0hnch01 [출처] [verilog] timescale에 대하여|작성자 j0hnch01 assign #5 foo..
Verilog 에서 배열 선언은 아래와 같이 하면 된다. 다중 배열의 예를 보자. reg [7:0] a[3]; 이렇게 한다. 앞쪽의 "[7:0]"는 배열을 표현보다는 버스의 비트를 나타내고, 배열을 뒤쪽의 "[3]" 으로 보고 이해하는 것이 쉽다. 즉 위의 예는 8비트짜리 배열 3개을 가지고 있다는 의미 또한 중요한 것은 포트로 뽑아낼 수가 없다는 엄청 불편한 진실.. 즉 module의 input/output으로 쓰기 곤란하다는.. 구체적인 예는 위 참고 사이트 참조 참고 : http://blog.naver.com/beahey/90192889480 [문법] 배열(array) [혼동 문법] 배열(array) 1. Array 와 Register (1) reg [4:0] port (2) reg [4:0] po..
"ls", "rm" 과 같은 리눅스/유닉스에서 많이 쓰이는 실행 명령어를 사용할 수 있게 CoreUtils for Windows 을 방문하여 설치하도록 하자.
원하는 FPGA핀으로 시그널을 정의해서 뽑아 보려면, ucf 파일을 건드려야 한다. 물론 친절하게 GUI로 띄워서 클릭으로 선택할 수도 있지만, 기본적인 것은 알아야~~ 기본적인 단어 내용은 아래 글을 참고하자. https://velog.io/@kyoung99u/Xilinx [Xilinx] UCF (User Constraints File) User Constraints File (UCF) 사용자 constraints를 기술하기 위한 AXCII text 파일이다. 모듈 포트 신호들이 어떻게 물리적인 핀에 연결되어야 하는지 기술한다. 즉, 선언한 I/O 포트를 Push button과 User LED로 연 velog.io 예제로 보는 것이 가장 쉽다. 추상적인 내용은 보기도 이해도 어렵다. # ==== Clo..
Windows 환경에서 Makefile 을 할 수 있도록 GNU Make for Windows 를 설치한다. (물론, 다양한 툴이 설치될 때 여러 버전의 Make 유틸이 설치되기는 한다. 의도하지 않아도, 특히 컴파일러들을 설치하면 각자의 Make 툴이 있다. 이때는 버전이나 실행파일 위치를 조심해야 한다.) 우리는 무료로 쓰는 툴을 깔아야 하니 "GNU"에 감사하면서, http://gnuwin32.sourceforge.net/packages/make.htm 여기를 방문하도록 한다. 소스까지는 보통 필요없으니, 다운로드에서 "Complete package, except sources" 이부분의 링크를 클릭하여 다운을 받는다. 여기도 링크(Setup) 복사해 둠. 누르면 Sourceforge 사이트로 이동..
반드시 해 줘야 한다. mbed가 기본적으로 USB2Serial을 제공하고 있으나, 이 드라이버를 반드시 꼭 설치 해 줘야 한다. 최소한 나의 경우에는 자동으로 설치되지 않았다. ㅠㅠ 그러나, 여기에 짜짠하고 설치파일이 준비되어 있다. https://mbed.org/handbook/Windows-serial-configuration 아래 그림처럼 창이 뜨고, 별표있는 곳을 클릭하면 다운로드~~~~~, 첨부파일까지 가져다 놓자. 이게 머라고, 그냥 실행시키면 된다. 보드를 켜두고, USB 연결해 놓고 설치한다. 이놈이 설치하다가 보드를 찾는다. mbedWinSerial_16466.exe 이제 아래 코드로 Serial 출력이 가능하게 된다. 설명은 여기 https://mbed.org/handbook/Seri..
Xilinx ISE를 통해 memory를 만들어 쓰다 보면, 초기화파일을 지정할 수 있도록 되어 있다.(그냥 소스레벨에서 배열로 선언하고, $readmemh 로 불러들여도, FPGA에 구울때 보면 초기값이 간단하게 들어오긴 하던데 ^^ 무튼) 그 파일 확장자가 .coe 파일이다. 생소하다. 구글링을 통해 찾자. http://sourceforge.net/projects/bin2coe/files/This is the Bin2Coe project ("bin2coe")This project was registered on SourceForge.net on Apr 17, 2011, and is described by the project team as follows:Small utility in C to conv..
생각보단 쉽다. 자신이 만든 라이브러리 라면 더 쉽겠지만,다른 사람이 만든 라이브러리의 버그를 과감히 수정해 보는 경험을 해보자. (물론 라이브러리 관리자에게 허가를 받아야 하지만)일단, 간단하게 해본 경험을 적어보았다.아래 http://medium.com 을 통해 적은 글을 클릭해서 보자. 그대로 긁어 오려니, CSS가 너무 안맞네. 수정하기는 귀찮고 링크로 대신한다. from : https://medium.com/@bjnhur/be-a-contributor-of-mbed-library-82a1b75fc754Ethernet Library for W5500 ( WIZnet ) 예제로 모두에게 오픈되어 있는 #mbed에 흔적을 남겨보자. 누군가에게 도움이 되지 않아도..되길 바라지만 Be a Contrib..
먼저, IDE를 쓰기 위한 기본 툴들은 다 설치했다. 아래 링크를 참고하고, Install ARM GCC (컴파일러 설치) the GNU MAKE Utility 설치하기 GNU Utilities package for Windows 설치 이제 도스창에서 벗어나, 화려한 그래픽의 세계로 이 컴파일러를 쓸 수 있도록 설정해 보자.대부분, Eclipse+CDT 의 조합으로 사용하는 것이 대부분이다.Getting Started with the ARM GCC Compiler on Windows for the STM32F4DISCOVERY Board링크 글을 참고해서 설치를 하는 게 좋다. 아니면, Free/Open ARM Cortex MCU Development Tools 인 CooCox 를 설치해 보는 것도 나쁘..
일단, 무료로 써야 하니 무료 컴파일러를 설치해 보자.핵심을 설치하고 나서, GUI, IDE 환경을 깔아야 할 터. 일단, https://launchpad.net/gcc-arm-embedded 를 방문한다.깔끔한 GNU Tools for ARM Embedded Processors 에 대한 설명 페이지와 다운로드 할 수 있는 링크들이 나와 있다.여기서 최신판으로 다운로드 한 다음, 설치에 들어간다.다운로드만을 원하면, 여기로 https://launchpad.net/gcc-arm-embedded/+download 가서 클릭클릭. 설치 파일을 실행한다. 당연히, 동의해 주시고~~ 그냥, 기본폴더로 복사해 주는 귀차니즘. "환경변수 등록을 해 주세요." 한다. 아니면 나중에 막 수동으로 해 줘야 하는 귀찮음이...
문제는 머냐..잘 정리해둔 곳에서 가져와보자..아래글 참고 출처 : Synchronizer 시뮬레이션 문제 사실, metastable을 피하는 방법은 예전에 한번 posting한 적이 있는데요. Metastable을 피하는 가장 머리가 편한 방법은 2개의 F/F을 직렬로 사용하는 2-flop 방법입니다. ...그런데, 1-flop이던 2-flop이던 F/F을 이용하여 동기화기(synchronizer)를 만들고 이 회로에 대한 타이밍 시뮬레이션 할 때, 동기화기로 사용한 F/F이 setup/hold timing을 만족하지 못하는 경우 F/F의 출력이 unknown으로 되어 전체 시뮬레이션이 망가지는 경우가 있다는 점이지요. 결론적으로 회로는 맞게 동기화기를 삽입해 두었다면, 시뮬레이션 툴에서 "X" 가 막..
개발환경을 돈으로 사면 제일 편함~~그렇지 않다면.. 원본 : http://embdev.net/topic/129986GCC-based IDEs: 무료 IDE 환경, Eclipse 기반이겠지CooCox IDEEm::BlocksFree GCC toolchain packages:GCC-ARM-Embedded – supported by ARMSourcery Codebench LiteDevKitProOther tools:OpenOCD – Open Source JTAG tool for ARM(...) Operating Systems:FreeRTOS – many example projects for various ARM boards provided머든 눈으로 봐서는 한계가..직접 쿠쿠쿠쿠쿠=)
간단한 CMSIS-DAP 디버거를 만들고 싶다면 꼭 읽어보자.전체적인 설명페이지는 여기 : http://mbed.org/handbook/cmsis-dap-interface-firmware CMSIS-DAP interface F/W한국말로 설명하는 페이지가 만들어 지려나~일단, 원본 페이지는 http://mbed.org/handbook/cmsis-dap-interface-firmware결론적으로 보니, CMSIS-DAP Interface를 담당하는 보드는 LPC11U35 시리즈가 부착된 보드를 사용해야 하고 타켓보드로는 Target Flash algorithm이 이미 구현되어 있는 LPC812, LPC1768, KL25Z, KL46Z, KL05Z 중에 하나를 탑재한 보드로 골라야 이 페이지가 제공하고 있는..
ARM SoC 개발 중 버스나 Decoder에 보면 default slave 가 있다. 머냐..메모리 맵상에 할당되지 않은 주소(빈공간)를 접근하는 경우 활성화 되는 모듈이다.이름 그대로 디폴트..역할은 단순하다. HREADYOUT은 물론 잘 띄워줘야 하고, 읽기든 쓰기든 끝이 나게 하려면 꼭 띄워줘야하고또 하나, HRESP에 에러를 띄워주는 것. 왜냐면 여기는 빈공간이니까~~ http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3445.htmlGeneral: What is a default slave?Applies to: AHBAnswerIf the memory map of a system does not define the full ..
AMBA bus를 사용하는 경우, 바이트별 접근을 위해 판단하는 시그널 생성 코드 (참고용, 책임 못짐 ^^) // Generate byte access from AHB busassign byte0_access = (HSIZE[1] | ((HADDR[1]==1'b0) & HSIZE[0]) | (HADDR[1:0]==2'b00));assign byte1_access = (HSIZE[1] | ((HADDR[1]==1'b0) & HSIZE[0]) | (HADDR[1:0]==2'b01));assign byte2_access = (HSIZE[1] | ((HADDR[1]==1'b1) & HSIZE[0]) | (HADDR[1:0]==2'b10));assign byte3_access = (HSIZE[1] | ((HAD..