출처: https://www.itu.int/rec/R-REC-M.2083-0-201509-P/en 

(위의 출처는 IMT 5G 비전에 대한 문서를 제공합니다.)

 

그동안 우리는 3G를 지나 4G는 LTE 라는 공식으로 핸드폰을 통해 우리도 모르게 빠른 LTE 통신서비스를 사용해왔습니다. 그리고 지난달 4월 3일, 한국에서 5G 서비스를 세계최초로 시작했는데요.. 그럼 이 5G라는 표준은 도대체 누가 정해주는거고 누가 개발하는 걸까요? 

 

요약하여 핵심만 말씀드리면, 국제전기통신연합(ITU)에서 비전 및 목표를 제시하고 국제표준화 단체인 3GPP에서 5G에 대한 기술표준을 개발하고 있습니다. ITU에선 5G를 IMT-2020이라고 부르며 5G가 지향하는서비스의 방향과 IMT-Advanced (4G) 대비 5G가 갖춰야 할 기술적 우위 등을 제시 하고 있습니다. 

 

아래의 그림은 이러한 관계를 간략하게 보여주는데요, ITU의 비전과 목표에 따라서 제조사, 이동통신사업자, 각종 연구 기관, 각국 정부 표준 기관 등이 참여하는 국제 이동통신기술 표준 단체가 표준을 개발하여 ITU에 그 결과를 제출하면 ITU에서 국제적 논의를 거쳐 국제 표준으로 최종 승인하게 되는 구조입니다. 

 

사실 과거에는 과거에는 이동통신 표준을 만드는 단체가 여럿 있었지만, 오늘날에는 이동통신 표준 담당 세계 최대 기술 표준단체인 3GPP 에 주요 회사나 단체가 모두 모여 국제 5G 표준을 개발하고 있습니다. 

 

ITU와 3GPP의 관계도

원문: http://warpproject.org/trac/wiki/WARPLab/Examples


이제부터의 포스팅은 아래의 WARPLab 7에서 제공하는 Example 을 직접 실행보고 결과 및 코드를 간단히 분석해 보도록 하겠습니다.


제 경우에는, MIMO OFDM 의 코드의 사용이 필요해서 주로 앞으로의 포스팅은 MIMO쪽을 다루게 될 것 같습니다.


하이퍼링크가 걸려있는 "WARPLab 7 Example: MIMO OFDM" 를 클릭하시면 File: wl_example_mimo_ofdm_txrx.m 에 대한 


간단한 설명과 결과 그래프를 보실수 있습니다. 6번 포스팅부터는 MIMO OFDM 예제를 사용하기 위해 필요한 지식들과 관련된 파일/함수들에 대해서 다루겠습니다.



Examples

This page briefly describes the examples in the M_Code_Examples directory that part of every WARPLab Reference Design Release.

SISO Transmission and Reception Example

File: wl_example_basic_txrx.m

Requirements: 2 WARP v3 kits or 2 WARP v2 kits, 1 antenna each.

This is the introductory example to WARPLab 7. This example demonstrates basic transmission and reception of waveforms between two WARP nodes. One node will transmit a simple sinusoid and the other node will receive the sinusoid.

SISO OFDM Comm Example

Please see SISO OFDM Example for details and code.

MIMO OFDM Comm Example

Please see MIMO OFDM Example for details and code.

Synchronized Nodes Example

Please see Synchronized Nodes Example for details and code.

Multi-Node Array Example

Please see 8x2 Multi-node Array for details and code.

Spectrogram Example

Please see Spectrogram Example for details and code.

User Extension Example

Please see EEPROM User Extension for details and code.




기억을 되살리고자, 지난 5. WARPLab 7 포스팅을 보시면 


WARPLab_Reference_Design_7.7.1.zip 파일을 다운로드하여 설치하였습니다.


파일의 구성은 아래와 같습니다.



이러한 구성은 아래의 


WARP 프로젝트 도움말의 구성과 유사한데.. 

이는 개발자가  Examples과 Reference 에 대해서 자세히 설명하겠다는 의도가 보입니다.




위의 그림과 같이 도움말들은 크게 Getting Started, WARPLab 7 Framework, WARPLab 7 Reference Design 3개의 분류로 나누어 져 있음을 알수있습니다. 실제로 M_Code_Reference 폴더의 내용들은 WARPLab 7 Framework와 WARPLab 7 Reference Design 의 내용을 기반으로 설명이 가능합니다. 


따라서, WARPLab7 을 실행하고 해당 코드를 해석하기 위해서 먼저, 위의 도움말의 위치와 내가 보고자 하는 코드파일이름들과 매칭하는 것이 중요합니다.



예를들어, http://warpproject.org/trac/wiki/WARPLab/Reference/Utility 에는 

아래와 같이 폴더 WARPLab_Reference_Design_7.7.1\M_Code_Reference\util 에 있는 코드들에 대한 간략한 설명들이 있습니다.




정리하자면, "WARPLab 7 Example: MIMO OFDM" 예제의 이해와 해석을 위해서는 WARPLab 7 Reference Design 에 대한 기반지식을 습득해야만 진행이 가능합니다. 또한, 실제 MIMO OFDM 통신에 대한 지식도 필요합니다. 












'N.&C. > WARP v3' 카테고리의 다른 글

3-3. SD Card 로 WARP Reference 시작하기  (2) 2017.08.02
5-2-2. WARPLab Quick Start 정리버전  (0) 2016.05.19
5-2. WARPLab Quick Start  (0) 2016.05.04
5-1. WARPLab Reference Design: Downloads  (0) 2016.05.03
5. WARPLab 7  (0) 2016.05.03

원문:  http://warpproject.org/trac/wiki/howto/SD_Config



오늘은, WARP v3 구매시 함께 꽂혀서 배송되는 SD 카드로 간단한 "카운터 예제" 프로그램으로 Virtex-6 FPGA를 구성하여 동작시켜보겠습니다.


WARP v3: FPGA Configuration via SD Cards

The WARP v3 board includes an SD card slot and CPLD tied to the Virtex-6 FPGA's dedicated configuration pins. Together these circuits enable configuring the FPGA using bitstreams stored on the SD card. For more details on the hardware design, refer to the WARP v3 user guide.

The basic steps for SD card configuration:

  1. Generate a valid bitstream (.bit file) for the Virtex-6 FPGA
  2. Convert the .bit file into a correctly-formatted .bin file
  3. Copy the .bin file to the correct location on the SD card

Each step is discussed in detail below.

The SD cards shipped with WARP v3 kits are pre-programmed with a known good design that implements a simple counter displayed on the hex displays. To re-program your SD card with this design, use this file: w3_sd_newCard.bin.zip (unzip to retrieve the .bin file).



WARP v3 보드를 구매하면, SD 카드가 보드의 SD카드 슬롯에 꽂혀서 배송됩니다. 

해당 SD 카드에 우리는 미리 Warp Project에서 제공하는 .bin 예제 파일을 Binary copy로 먼저 수행해야 합니다.


사실, 원래는 FPGA의 구성을 위해서는 bitstreams 을 생성하고 이를 다시 bin으로 변환하여 SD카드에 복사하고 이를 사용하여 동작시켜야 하지만, 우리는 주어지는 bin파일을 사용하여 간단하게 동작시켜 보겠습니다.

(bitstreams 생성은, 본 글의 처음부분에 링크해놓은 글을 읽으면서 천천히 따라하시면 가능합니다.)


우선, bin파일은 위의 w3_sd_newCard.bin.zip​ 을 다운로드 하여 사용합니다.



Copying .bin Files SD Cards


Now that you've generated a valid binary configuration file (.bin), you must copy it to a specific location on an SD card.

WARNING: the tools for writing binary files to arbitrary locations on the SD card are also capable of overwriting critical areas of your computer's hard drive. Always verify the output device descriptor before running these tools.

The default WARP v3 CPLD design loads configuration files from the SD card starting at an offset of 64MB. Up to 8 configuration files can be stored per card, with each file separated by 16MB. The active configuration file is selected by the config DIP switch on the WARP v3 board. You must choose which "slot" when copying the .bin file to the SD card.

We use the open-source dd tool to write configuration files to SD cards. dd is available for OS X, Linux and Windows (and probably other OSs). Each call to dd copies one configuration file. There are four required arguments:


(복사 명령어 ↘ )

dd bs=512 seek=<base_block_addr> if=<config_file.bin> of=<sd_device_descriptor>

Variables to replace:

  • <sd_device_descriptor>: Device descriptor for SD card (OS specific; see below)
  • <config_file.bin>: Input file (your .bin file)
  • <base_block_addr>: Staring address for the output file, in units of block size. Use (131072 + slotNum*32768) for standard WARP v3 config design:

    • Slot 0: 131072
    • Slot 1: 163840
    • Slot 2: 196608
    • Slot 3: 229376
    • Slot 4: 262144
    • Slot 5: 294912
    • Slot 6: 327680
    • Slot 7: 360448

The specific calls to dd depend on your operating system.


다운로드한 bin파일을 SD카드로 복사하기 위해서는 우리는 dd 라는 리눅스 명령어를 사용합니다. 


(dd란? 파일을 변환하고 복사하는 것이 주 목적인 유닉스 및 유닉스 계열 운영 체제용 명령 줄 유틸리티입니다. -위키- )


현재 사용하신 OS가 리눅스라면 그대로 dd를 사용해서 위의 복사 명령어를 사용하시면 되지만, Window를 사용하신다면 window 용 dd 유틸리티가 필요합니다. 이것도 친절하게 웹사이트에 있습니다. 아래를 참고하세요.


http://www.chrysocome.net/download


위의 사이트에서, dd-0.6beta3.zip 또는 ddrelease64.exe 파일을 다운로드 하시면 사용가능합니다. 

다운로드한 파일들은 w3_sd_newCard.bin.zip​ 과 함께 같은 폴더로 복사해주세요. 편리를 위해서 이름을 그냥 win-dd.exe  로 변경하여 사용하겠습니다. 저는 c:\dd 라는 폴더에 두 파일을 복사했습니다.


이제 w3_sd_newCard.bin 파일을 SD카드로 복사하기 위해서 아래의 내용대로 따라해주세요.


http://warpproject.org/trac/wiki/howto/SD_Config/Windows



A port of dd is available for Windows from http://www.chrysocome.net/dd. We have sucessfully tested verison 0.6beta3 on Win 7 64-bit.

Download dd.exe from the site above. Move it to somewhere in your path, then rename it win-dd.exe (this avoids conflicts with the dd.exe distributed with the EDK, which isn't useful for writing SD cards in Windows).

Finding the SD card descriptor:

  1. Insert the SD card. Take note of which drive letter it is assigned in Windows Explorer.
  2. Open a command prompt as administrator and run win-dd --list. The output will be similar to:
    C:\xps_proj\SDK_Workspace\MyProj_hw_platform>win-dd --list
    rawwrite dd for windows version 0.6beta3.
    Written by John Newbigin <jn@it.swin.edu.au>
    This program is covered by terms of the GPL Version 2.
    
    Win32 Available Volume Information
    \\.\Volume{72603844-0595-11e1-822c-806e6f6e6963}\
      link to \\?\Device\HarddiskVolume2
      fixed media
      Not mounted
    
    \\.\Volume{72603845-0595-11e1-822c-806e6f6e6963}\
      link to \\?\Device\HarddiskVolume3
      fixed media
      Mounted on \\.\c:
    
    \\.\Volume{9654066c-60bd-11e1-9757-001018af5a78}\
      link to \\?\Device\HarddiskVolume4
      removeable media
      Mounted on \\.\f:
    
    \\.\Volume{72603848-0595-11e1-822c-806e6f6e6963}\
      link to \\?\Device\CdRom0
      CD-ROM
      Mounted on \\.\d:
    
    
    NT Block Device Objects
    \\?\Device\CdRom0
      size is 2147483647 bytes
    \\?\Device\Harddisk0\Partition0
      link to \\?\Device\Harddisk0\DR0
      Fixed hard disk media. Block size = 512
      size is 500107862016 bytes
    \\?\Device\Harddisk0\Partition1
      link to \\?\Device\HarddiskVolume1
      Fixed hard disk media. Block size = 512
      size is 41094144 bytes
    \\?\Device\Harddisk0\Partition2
      link to \\?\Device\HarddiskVolume2
    \\?\Device\Harddisk0\Partition3
      link to \\?\Device\HarddiskVolume3
    \\?\Device\Harddisk1\Partition0
      link to \\?\Device\Harddisk1\DR1
      Removable media other than floppy. Block size = 512
      size is 1977614336 bytes
    \\?\Device\Harddisk1\Partition1
      link to \\?\Device\HarddiskVolume4
      Removable media other than floppy. Block size = 512
      size is 32002048 bytes
    
    Virtual input devices
     /dev/zero   (null data)
     /dev/random (pseudo-random data)
     -           (standard input)
    
    Virtual output devices
     -           (standard output)
     /dev/null   (discard the data)
    
  3. To find the descriptor for the SD card itself (and not its FAT partition):
    1. Look in the "Win32 Available Volume Information" section and find the device descriptor for the SD card FAT partition. In this system the SD card mounts as drive F:. The corresponding descriptor is \\?\Device\HarddiskVolume4
    2. Look in the "NT Block Device Objects" section and find the alias for the same descriptor. In this example, it is:
      \\?\Device\Harddisk1\Partition1
        link to \\?\Device\HarddiskVolume4
        Removable media other than floppy. Block size = 512
        size is 32002048 bytes
      
    3. Look for the device with the same Harddisk number but with Partition0. In this example, it is:
      \\?\Device\Harddisk1\Partition0
        link to \\?\Device\Harddisk1\DR1
        Removable media other than floppy. Block size = 512
        size is 1977614336 bytes
      
    4. The block device listed is your SD card descriptor. In this example it is \\?\Device\Harddisk1\Partition0.
      • Confirm that the size of the Partition0 device approximates the capacity of your SD card. The SD card in this example is 2GB (all Mango-supplied cards are 2GB).
      • Confirm that your computer's hard drives have different Harddisk numbers. In this example the C: drive is \\?\Device\Harddisk0.
NOTE: The actual device descriptor on your system is likely different than this example. The descriptor can also change between reboots. Always confirm the current descriptor before copying to the SD card.

Copying the .bin file:

  1. Run this command, replacing the last three arguments with the correct values:
    win-dd bs=512 seek=<N> if=<yourFile.bin> of=<SD_device> --progress
    
    1. <N>: depends on the target slot number; use (131072 + slotNum*32768). More details here.
    2. <yourFile.bin>: the binary FPGA configuration file
    3. <SD_device>: SD device descriptor, usually in the format of \\?\Device\HarddiskX\Partition0. See instructions above.
  2. If successful, dd should report the following:
    18032+1 records in
    18032+1 records out
    
  3. win-dd may report "Error reading file: 87 The parameter is incorrect". In our experience this is normal and not an actual error.
  4. Repeat for additional .bin config files in additional slots, if needed.
  5. Eject the SD card.


1) 프로그램 및 파일 검색에서 "cmd" 를 검색하여 반드시 "관리자 권한" 으로 명령 프롬프트를 실행합니다. 

     : 관리자 권한을 얻으셔야, 현재 PC의 Disk들의 파티션이름을 정확하게 알수가 있습니다.

2) 앞서 미리 파일들을 다운로드 해놓은 폴더로 이동합니다. 

    cd\ 

    cd c:\dd

3) SD카드를 리더기를 사용하여 컴퓨터에 삽입합니다. (무슨 드라이브로 SD카드가 잡히는지 확인하세요. (예) e: ) 

4) win-dd --list 명령을 입력하여 현재 디스크정보를 모두 봅니다. 

     :위의 output 예시와 같은 디스크 정보가 출력됩니다. 

       만약 e:가 link to \\?\Device\HarddiskVolume4 를 가리킨다면, 

       이와 매칭되는 \\?\Device\Harddisk1\Partition1 의 위치를 가리킨다면, Partition0으로 변경하여 주소를 사용.

       즉, \\?\Device\Harddisk1\Partition0 이 SD카드의 위치를 의미하게 됩니다.

5) 복사 명령을 실행합니다.


win-dd bs=512 seek=131072 if=w3_sd_newCard.bin  of=\\?\Device\Harddisk1\Partition0 --progress



아마 제가 했던 방법대로 하셨다면, 위의 명령어로 복사를 진행하게 됩니다. if는 복사할 파일의 위치와 이름을 적으시면 되고 of에는 복사될 주소를 적으시면 됩니다. 또한, 131072는 SD카드의 슬롯주소를 의미하는데, WARP v3장비를 구매하면 제공하는 SD카드는 사전에 미리 8 slot으로 포맷/파티션 분할되어 제공하기 때문에 원하는 슬롯에 .bin 파일을 write 한다고 생각하면 됩니다. 예를 들면, slot0 = 131072 에는 기본적인 프로그램을 저장, slot1= 163840 에는 802.11 reference 프로그램을 저장했다고 생각해봅시다. 이때 우리는 원하는 프로그램을 동작시키고자 할때마다 새롭게 SD카드에 복사하는 것이 아니라, 미리 slot0과 1에 bin파일들을 복사해놓고 WARP v3의 DIP스위치만 변경하여 바로바로 사용하는 것입니다. (사실 SD카드 포맷해도 사용이 가능합니다. 파티션만 날아갈뿐 어쨌든 인식이 됩니다)



6) 아마 아래와 같은 복사 성공 메세지 외에도 어떠한 에러메세지가 출력될것입니다.

18032+1 records in

18032+1 records out


87 에러메서지는 단순한 표기오류일뿐 신경쓰시지 않아도 작동합니다. 


7) 이제 복사한 bin파일이 있는 SD카드를 WARP SD슬롯에 꽂고 전원을 넣어봅시다. 

    저는 아래와 같이 동작했습니다.







'N.&C. > WARP v3' 카테고리의 다른 글

6. WARPLab 7_Example  (0) 2018.01.31
5-2-2. WARPLab Quick Start 정리버전  (0) 2016.05.19
5-2. WARPLab Quick Start  (0) 2016.05.04
5-1. WARPLab Reference Design: Downloads  (0) 2016.05.03
5. WARPLab 7  (0) 2016.05.03

Sigma Notation (Summation Notation) and Pi Notation


Sigma (Summation) Notation

\sum is a capital letter from the Greek alphabet called “Sigma”… it corresponds to “S” in our alphabet (think of the starting sound of the word “sigma”). It is used in mathematics to describe “summation”, the addition or sum of a bunch of terms (think of the starting sound of the word “sum”: Sssigma = Sssum).

Sigma can be used all by itself to represent a generic sum… the general idea of a sum, of an unspecified number of unspecified terms:

\displaystyle\sum a_i~\\*\\*=~a_1+a_2+a_3+...

But this is not something that can be evaluated to produce a specific answer, as we have not been told how many terms to include in the sum, nor have we been told how to determine the value of each term.

A more typical use of Sigma notation will include an integer below the Sigma (the “starting term number”), and an integer above the Sigma (the “ending term number”). In the example below, the exact starting and ending numbers don’t matter much since we are being asked to add the same value, two, repeatedly. All that matters in this case is the difference between the starting and ending term numbers… that will determine how many twos we are being asked to add, one two for each term number.

\displaystyle\sum_{1}^{5}2~\\*\\*=~2+2+2+2+2

Sigma notation, or as it is also called, summation notation is not usually worth the extra ink to describe simple sums such as the one above… multiplication could do that more simply.

Sigma notation is most useful when the “term number” can be used in some way to calculate each term. To facilitate this, a variable is usually listed below the Sigma with an equal sign between it an the starting term number. If this variable appears in the expression being summed, then the current term number should be substituted for the variable:

\displaystyle\sum_{i=1}^{5}i~\\*\\*=~1+2+3+4+5

Note that it is possible to have a variable below the Sigma, but never use it. In such cases, just as in the example that resulted in a bunch of twos above, the term being added never changes:

\displaystyle\sum_{n=1}^{5}x~\\*\\*=~x+x+x+x+x

The “starting term number” need not be 1. It can be any value, including 0. For example:

\displaystyle\sum_{k=3}^{7}k~\\*\\*=~3+4+5+6+7

That covers what you need to know to begin working with Sigma notation. However, since Sigma notation will usually have more complex expressions after the Sigma symbol, here are some further examples to give you a sense of what is possible:

\displaystyle\sum_{i=2}^{5}2i\\*~\\*=2(2)+2(3)+2(4)+2(5)\\*~\\*=4+6+8+10

\displaystyle\sum_{j=1}^{4}jx\\*~\\*=1x+2x+3x+4x

\displaystyle\sum_{k=2}^{4}(k^2-3kx+1)\\*~\\*=(2^2-3(2)x+1)+(3^2-3(3)x+1)+(4^2-3(4)x+1)\\*~\\*=(4-6x+1)+(9-9x+1)+(16-12x+1)

\displaystyle\sum_{n=0}^{3}(n+x)\\*~\\*=(0+x)+(1+x)+(2+x)+(3+x)\\*~\\*=0+1+2+3+x+x+x+x

Note that the last example above illustrates that, using the commutative property of addition, a sum of multiple terms can be broken up into multiple sums:

\displaystyle\sum_{i=0}^{3}(i+x)\\*~\\*=\displaystyle\sum_{i=0}^{3}i+\displaystyle\sum_{i=0}^{3}x

And lastly, this notation can be nested:

\displaystyle\sum_{i=1}^{2}\displaystyle\sum_{j=4}^{6}(3ij)\\*~\\*=\displaystyle\sum_{i=1}^{2}(3i\cdot4+3i\cdot5+3i\cdot6)\\*~\\*=(3\cdot1\cdot4+3\cdot1\cdot5+3\cdot1\cdot6)+ (3\cdot2\cdot4+3\cdot2\cdot5+3\cdot2\cdot6)

The rightmost sigma (similar to the innermost function when working with composed functions) above should be evaluated first. Once that has been evaluated, you can evaluate the next sigma to the left. Parentheses can also be used to make the order of evaluation clear.

Pi (Product) Notation

\prod is a capital letter from the Greek alphabet call “Pi”… it corresponds to “P” in our alphabet (think of the starting sound of the word “pi”). It is used in mathematics to represent the product of a bunch of terms (think of the starting sound of the word “product”: Pppi = Ppproduct). It is used in the same way as the Sigma notation described above, except that succeeding terms are multiplied instead of added:

\displaystyle\prod_{k=3}^{7}k\\*~\\*=(3)(4)(5)(6)(7)

\displaystyle\prod_{n=0}^{3}(n+x)\\*~\\*=(0+x)(1+x)(2+x)(3+x)

\displaystyle\prod_{i=1}^{2}\displaystyle\prod_{j=4}^{6}(3ij)\\*~\\*=\displaystyle\prod_{i=1}^{2}((3i\cdot4)(3i\cdot5)(3i\cdot6))\\*~\\*=((3\cdot1\cdot4)(3\cdot1\cdot5)(3\cdot1\cdot6)) ((3\cdot2\cdot4)(3\cdot2\cdot5)(3\cdot2\cdot6))

Summary

Sigma (summation) and Pi (product) notation are used in mathematics to indicate repeated addition or multiplication. Sigma notation provides a compact way to represent many sums, and is used extensively when working with Arithmetic or Geometric Series. Pi notation provides a compact way to represent many products.

To make use of them you will need a “closed form” expression (one that allows you to describe each term’s value using the term number) that describes all terms in the sum or product (just as you often do when working with sequences and series). Sigma and Pi notation save much paper and ink, as do other math notations, and allow fairly complex ideas to be described in a relatively compact notation.


깔끔하고 유용한 내용인것 같아서 링크했습니다.

cite: https://mathmaine.wordpress.com/2010/04/01/sigma-and-pi-notation/


원문: http://warpproject.org/trac/wiki/WARPLab/QuickStart


WARPLab Quick Start



WARP 프로젝트 웹사이트의 내용들은 친절하고 자세하지만, 처음 시작하는 저에게는 너무 생소하고 접근하기에 어려워서
실질적으로 어떻게 해야 WARPLab을 시작할수가 있을까? 에 대한 해답을 정리해보았습니다.

> 먼저 WARPLab 이란? 
 가지고 계신 WARP 장비를 매트랩을 이용하여 연구를 진행할수 있도록 지원하는 FPGA 레퍼런스를 의미합니다.
따라서, WARPLab 을 사용하기 위해서 필요한 준비물은 2가지로 분류 가능합니다.

1) 하드웨어 준비물
PC 1대, WARP 모듈 (2대이상)과 FMC-RF-2X245 radio FMC 모듈 각 1개씩, 이더넷카드 2개 (PC내장형 1개와 추가1개), 무선 AP (스위치용도로) , LAN 케이블 3개, SD 카드와 리더기 각1개씩 (레퍼런스 소스파일을 WARP 모듈에 설치용)


2) 소프트웨어 준비물

매트랩(2011a 버전이상),  

PC에는 고정 IP주소를 할당해야함 : 아이피 주소 10.0.0.250, 서브넷 마스크 255.255.255.0

UDP 포트사용을 위한 방화벽해제

WARP v3 Latest Release 파일(4개의 폴더가 존재) : 아래에 다시 자세히 설명하겠습니다.



Q. PC와 WARP간의 연결은 무선공유기를 스위치 기능으로 사용하여 통신하는것은 이해가 되지만, 실질적으로 어떻게 MATLAB 으로 명령을 전달하고 사용자 정의의 프로그램을 코딩하여 예제를 실행할수있는지는 아직까지 명확하게 이해가 되진 않습니다.


Q. 또한 자일링스사의 FPGA보드를 시스템으로 사용하지만,  어플리케이션 구현시에는 MATLAB을 사용하는데, 이에 대한 구체적인 동작원리와 방식은 의문이 남습니다. 여기에 대한 해답은 차차 달도록 하겠습니다. 


3) Code File의 구성과 설명


(1) Bitstreams_Reference


확장자가 Bin인 파일로써, WARP장비의 전원이 켜져있고 SD카드가 WARP의 카드 슬롯에 삽입되어있다면, SD카드에 해당되는 Bitstreams_Reference 는 자동으로 WARP에 설치를 진행합니다. Bin 파일을 SD 카드에 설치 및 구성하는 방법은 아래의 링크를 참조해주세요. http://warpproject.org/trac/wiki/howto/SD_Config

따라서, 설치를 원하는 Reference 파일의 Bitstreams (bit 파일을 .bin file로 변환합니다. 다음의 SD카드에 로 구성하여 생성하는 법을 참고 : http://warpproject.org/trac/wiki/howto/SD_Config) 을 SD카드에 넣어놓고 WARP에 읽히면 됩니다.


Q.그럼 bit파일은 무엇이고? bin 파일은 무엇인가?     (bin파일: binary configuration file )

         .bit 파일은 Xilinx ISE 하드웨어 및 구현 단계에서 생성되는 최종의 출력물을 의미한다.  .bit 파일은 여러분의                WARP 보드에 적합하도록 생성해야 하며, http://warpproject.org/trac/wiki/howto/SD_Config 절차를 따라하기

   전에 적절한 bit 파일을 생성하고 진행해야 한다.

   


(2) EDK_Projects


이 폴더에는 다양한 EDK 프로젝트들이 포함되어있습니다. 자일링스 ISE를 설치하게 되면 자일링스 임베디드 개발 키트 EDK 소프트웨어도 함께 설치가 됩니다. 하드웨어의 구성 및 설계는 XPS로 실행 되어야 합니다. 또한 마이크로 블레이즈 프로세서의 실행에 필요한 여러 라이브러리들은 자일링스 SDK에 내장되어 있습니다. 

만약 기존의 제공되는 Reference 디자인을 사용하는 경우는 위의 Bitstreams_Reference 의 설치와 M 코드파일만 필요합니다. 하지만 MicroBlaze/PPC C code의 수정이 필요하다면 EDK 프로젝트를 열어 수정해야 합니다. 만약 FPGA reference design을 수정하기 위해서는 XPS 프로젝트를 열어서 수정해야 합니다. 

The WARPLab FPGA design uses custom peripherals designed in Xilinx System Generator, including the warplab_buffers core. You will need MATLAB, Simulink and System Generator to modify these cores.


CPLD 복합 프로그램 가능 논리 소자



(3) M_Code_Examples


이 폴더는 WARPLab 릴리즈와 호환되는 스크립트들이 포함되어있습니다. 예제들은 아래와 같습니다.


== SISO OFDM Comm Example ==

Please see [wiki:./OFDM SISO OFDM Example] for details and code.


== MIMO OFDM Comm Example ==

Please see [wiki:./MIMO_OFDM MIMO OFDM Example] for details and code.


== Synchronized Nodes Example ==

Please see [wiki:./nodeSync Synchronized Nodes Example] for details and code.


== Multi-Node Array Example ==

Please see [wiki:./8x2Array 8x2 Multi-node Array] for details and code.


== Spectrogram Example ==

Please see [wiki:./Spectrogram Spectrogram Example] for details and code.


== User Extension Example ==

Please see [wiki:./userExtension EEPROM User Extension] for details and code.



우리는

http://warpproject.org/trac/browser/ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Examples/wl_example_basic_txrx.m


기본적인 SISO 송수신 예제를 하나씩 살펴보면서 어떤 형태로 WARPLab 7이 설치된 WARP Node가 동작하는지 알아볼 것입니다. 2개의 WARP node가 정현파를 전송하고 수신 받을 것 입니다.



(4) M_Code_Reference


PC의 매트랩을 실행하여 WARP와 연동하기 위한 WARPLab 지원 파일들을 의미합니다.

사용자가 wl_setup.m 스크립트를 실행시켜야 합니다.

자세한 설명은 아래와 같습니다.


WARPLab의 셋업때마다  wl_setup.m 파일은 실행되어야 합니다. 

파일이 실행되면 MATLAB의 prompt 창으로 요청되는 사항들에 대해서 입력을 하면 됩니다. 

주로 IP주소나 디렉토리 주소들을 묻는 셋업환경설정을 묻습니다. 입력값에 따라서  'wl_config.ini' 파일을 형성 시키고 이는 셋팅값으로 유지 됩니다. 후에 다시 이작업을 하지 않길 원하면 미리 작업해놓은 .ini 파일을 복사해놓습니다.



>> 따라서 요약하자면, (1)의 파일을 WARP에 설치하고  PC-WARP를 무선AP (스위치)와 연결하면서 IP주소를 세팅하고, 매트랩의 wl_setup.m 을 통해 설정하고 나면 사용자가 원하는 M_Code Examples를 실행할수가 있습니다. 







'N.&C. > WARP v3' 카테고리의 다른 글

6. WARPLab 7_Example  (0) 2018.01.31
3-3. SD Card 로 WARP Reference 시작하기  (2) 2017.08.02
5-2. WARPLab Quick Start  (0) 2016.05.04
5-1. WARPLab Reference Design: Downloads  (0) 2016.05.03
5. WARPLab 7  (0) 2016.05.03

원문: http://warpproject.org/trac/wiki/WARPLab/QuickStart


WARPLab Quick Start


System Requirements


1) Check your WARP Repository is set up and up to date



2) Review the WARPLab 7 System Requirements



3) Review the Getting Started Guide for hardware basics and the WARPLab Hardware Configuration  

    Guide for WARPLab specific uses of WARP hardware.


 앞서 포스팅한 1~4 까지의 내용들을 리뷰하고 오셔야 합니다.


4) Review the WARPLab Mex Compilation Guide for additional WARPLab features






Setting up the WARPLab 7 Framework


  1. Download the latest WARPLab Reference Design Release (Download) and unzip it to a location of your choosing.
  2. Open MATLAB and change the current path to the M_Code_Reference directory from the downloaded archive.
  3. Run wl_setup on the MATLAB command line.
  4. Follow the prompts to configure your WARPLab environment.


WARPLab 7의 셋팅은 매우 쉽습니다.
먼저 레퍼런스 디자인 파일을 설치하여 로컬 폴더에 압축을 풉니다.

매트랩에서 경로추가를 하고 wl_setup  파일을 run 합니다. 

그 후 매트랩의 지시를 따릅니다.



Hardware Setup


For your PC:

  1. Assign one of your NICs to the manual IP address specified in the wl_setup step above (default: (10.0.0.250, 255.255.255.0))
  2. Connect the NIC to a 1Gb Ethernet switch

앞서 Getting Start 에서 보여드린 PC와 WARP 간의 연결은 AP나 스위치에 LAN 케이블을 통해서 연결됩니다. 따라서 PC와 WARP 의 설정이 필요합니다. 먼저 PC의 경우는 위와 같은 고정되 IP주소를 지정하고 이더넷 스위치에 연결합니다.


For WARP v3 nodes:

  1. Connect ETH_A to the 1Gb Ethernet switch your PC is connected to.
  2. Set the user DIP switch to a unique value on each node, starting at 0
  3. Configure the FPGA with the Reference Design. The reference bitstreams are included in the Bitstreams_Reference folder from the downloaded archive. Find the bitstream appropriate for your hardware and program the .bit file to the board using the Xilinx iMPACT tool. The .bin file can be used to configure an SD card with the design (see the SD config howto for help using the .bin file).
    1. On boot each node will display its node ID on the right hex display
    2. The bottom green LED will blink until the Ethernet link is up
    3. All four green LEDs will blink when the node is ready to accept commands from MATLAB


ETH_A 포트와 PC와 연결된 스위치간에 LAN 케이블로 유선 연결합니다.
각노드들은 고유한 값으로 DIP 스위치를 셋팅합니다.
FPGA와 레퍼런스 디자인을 WARP에 구성합니다.
이는 비트스트림으로 작성된 레퍼런스 입력 파일을 해당 Bitstreams_Reference 폴더에 복사합니다.
SD카드에 구성하는 방법은 이전의 포스팅에서 설명했습니다.

그러고나면 이제 각각의 WARP는 HEX 디스플레이에 해당 노드의 ID값을 디스플레이 합니다.
그리고 하단의 녹색 LED가 깜빡입니다.
이후 WARP 노드가 매트랩의 명령을 받아들일 준비가 다 되면 4개의 LED들이 모두 깜빡입니다.


예를들면,
Examples

Confirm everything is ready by copying and pasting the following lines to the MATLAB command line:
clear
N = 1;
nodes = wl_initNodes(N);
wl_nodeCmd(nodes,'identify');
disp(nodes)


Note: N can be changed to the number of nodes in your network. When you run these lines of code, you should see the User I/O LEDs on your N nodes blink as a result of the identify command. Additionally, you should see your nodes object vector print status messages to the screen. For N = 2, your status display should be similar to:

Displaying properties of 2 wl_node objects:
|  ID |  WLVER |  HWVER |    Serial # |  Ethernet MAC Addr |
------------------------------------------------------------
|   0 |  7.0.0 |      3 |  W3-a-00027 |  40-D8-55-04-20-36 |
------------------------------------------------------------
|   1 |  7.0.0 |      3 |  W3-a-00041 |  40-D8-55-04-20-52 |
------------------------------------------------------------

If the previous stepped work, you should now try one of the M-Code Examples.



Getting Help

There are a few resources for getting help with using WARPLab for your own designs:

The wl_cmd_list is a function that allows you to display all commands than an object supports.
The wl_cmd_doc is a function that will display documentation for a particular command.
The WARP forums (​http://warpproject.org/forums/) are a great place to ask questions.




위의 프로세스에 따라서 진행을 하시면, 사진과 같이 각 노드들의 세그먼트에 노드아이디 1,2과 출력이되고 서로간에 준비가 되었음을 매트랩 실행화면에 출력이 됩니다. 

원문: http://warpproject.org/trac/wiki/WARPLab/Downloads


WARPLab Reference Design: Downloads


The latest WARPLab Reference Design is available for download below. The source and binary files are distributed under the terms of the WARP License.


Refer to the Quick Start guide to get started with the reference design.



최신의 WARPLab 레퍼런스 디자인은 아래의 링크에서 다운로드가 가능하며, 빠른 시작을 위한 안내서도 Quick Start guide 를 참조하십시요.


아래의 zip 파일을 다운로드 하여 매트랩 폴더로 복사하여 경로추가를 하십시요. 구체적인 실행은 다음 섹션에서 다룹니다.


WARP v3 Latest Release

Download: WARPLab_Reference_Design_7.7.0.zip

Release Details:

HardwareReleaseDate PostedSVN Rev.ISE Ver.ArchMATLAB Ver.RF Interface Support
WARP v37.7.018-Dec-2015498514.4MB/AXI2011a or later1-2: WARP v3 on-board interfaces 
3-4: Requires FMC-RF-2X245

View the change log for release notes.


WARP v2 Latest Release

Download: WARPLab_Reference_Design_7.5.1.zip

Release Details:

HardwareReleaseDate PostedSVN Rev.ISE Ver.ArchMATLAB Ver.RF Interface Support
WARP v27.5.112-Mar-2015448714.4PPC/PLB2009b or later1-2: Radios in slots 2 & 3 
3-4: Radios in slots 1 & 4

View the change log for release notes.





Reference Design Archive


The WARPLab reference design is packaged as a .zip file with the full source code and compiled bitstreams for the reference design. You can view the latest source code in the repository (ResearchApps/PHY/WARPLAB/WARPLab7). Please note the code in the repository is under active development.


The contents of the WARPLab reference design .zip file are explained below.


레퍼런스 디자인의 구성은 전체 소스코드와 비트스트림으로 구성되어 zip 파일로 압축되어있습니다. 

최신 코드소스는 저장소 ResearchApps/PHY/WARPLAB/WARPLab7 를 참고하세요.


 압축을 풀면 아래의 4개 폴더가 존재합니다. 각 폴더에 대한 설명은 아래와 같습니다.




Bitstreams_Reference

Bitstreams are fully-built designs that are ready to be downloaded onto WARP hardware. Files ending with the extension '.bit' may be downloaded using the Xilinx tool iMPACT. Files ending with the extension .bin may loaded onto an SD card so that the WARP v3 hardware will automatically be programmed whenever it is powered on and has the SD card inserted. Details on how to configure an SD card with a '.bin' file are provided here. For WARP v2 hardware, compact flash cards may be loaded with the provided .ace files for similar functionality (instructions provided here).

  • w3: WARP v3 FPGA bitstreams (see SD config howto for help using the .bin file)
  • w2: WARP v2 FPGA bitstreams (see CF config howto for help using the .ace file)


    Bitstreams 이란? WARP 하드웨어로 바로 다운로드가 가능하게끔 준비가 된 디자인을 의미합니다. 확장자명이 bin으로 끝나며, WARP의 SD카드에 복사하여 전원을 켜면 하드웨어가 자동으로 프로그래밍을 수행합니다. bin 파일에 대한 자세한 내용은 링크를 참조하세요.



EDK_Projects

This folder contains EDK projects for various hardware configurations. The WARPLab FPGA design is built with the Xilinx Embedded Development Kit (EDK) software. The hardware design is constructed and implemented in EDK Xilinx Platform Studio (XPS). The software design, running in the MicroBlaze processor, is built in the Xilinx SDK. Opening these EDK projects requires a copy of the WARP edk_user_repository at the SVN revision in the table above.

If you want to use (but not modify) the reference FPGA design, you only need a bitstream and the reference M code. If you want to modify the MicroBlaze/PPC C code, you can download an EDK project in this folder, but only modify the SDK project contained therein. To modify the FPGA hardware design, you will need to modify the XPS project. The WARPLab FPGA design uses custom peripherals designed in Xilinx System Generator, including the warplab_buffers core. You will need MATLAB, Simulink and System Generator to modify these cores.

Each of these EDK projects are a combination of an XPS project along with Eclipse software projects that can be imported into an SDK workspace. These software projects are present in the 'SDK_Workspace' subfolder of every XPS project -- we recommend using this folder as the location of the SDK Workspace. These projects can then be imported "in place" and will not need to be copied.

  • w3: WARP v3 EDK projects for the 2-radio (2RF) and 4-radio (4RF) WARPLab Reference Designs
  • w2: WARP v2 EDK projects for the 2-radio (2RF) and 4-radio (4RF) WARPLab Reference Designs


    이 폴더에는 다양한 EDK 프로젝트들이 포함되어있습니다. 자일링스 ISE를 설치하게 되면 자일링스 임베디드 개발 키트 EDF 소프트웨어도 함께 설치가 됩니다. 하드웨어의 구성 및 설계는 XPS로 실행 되어야 합니다. 또한 마이크로 블레이즈 프로세서로 실행되는 소프트웨어 디자인은 자일링스 SDK에 내장되어 있습니다.

    FPGA 하드웨어 디자인의 수정은 XPS로 수행되어야 하며, 소프트웨어 디자인은 SDK로 수정됩니다. EDK 프로젝트들은 각각 SDK workspace로 불러올수 있습니다.  


M_Code_Examples

This folder contains example WARPLab scripts that are compatible with this release of WARPLab. Explanations of these scripts are available here.

이 폴더는 WARPLab 릴리즈와 호환되는 스크립트들이 포함되어있습니다. 예제들은 아래와 같습니다.


Examples 

This page briefly describes the examples in the M_Code_Examples directory that part of every WARPLab Reference Design Release.

SISO Transmission and Reception Example

File: wl_example_basic_txrx.m

Requirements: 2 WARP v3 kits or 2 WARP v2 kits, 1 antenna each.

This is the introductory example to WARPLab 7. This example demonstrates basic transmission and reception of waveforms between two WARP nodes. One node will transmit a simple sinusoid and the other node will receive the sinusoid.

SISO OFDM Comm Example

Please see SISO OFDM Example for details and code.

MIMO OFDM Comm Example

Please see MIMO OFDM Example for details and code.

Synchronized Nodes Example

Please see Synchronized Nodes Example for details and code.

Multi-Node Array Example

Please see 8x2 Multi-node Array for details and code.

Spectrogram Example

Please see Spectrogram Example for details and code.

User Extension Example

Please see EEPROM User Extension for details and code.


M_Code_Reference

This folder contains all of the supporting files needed for WARPLab to run on a host PC with MATLAB. When downloading a new Reference Design Release, users will need to run the wl_setup.m script in this folder.


PC의 매트랩을 실행하여 WARP와 연동하기 위한 WARPLab 지원 파일들을 의미합니다.

새로운 릴리즈의 출시마다 사용자가 해당 스크립트를 실행시켜야 합니다.



Q. SD카드를 사용하여 어떻게 FPGA를 구성할수가 있을까?

XPS로 제작한 FPGA 디자인을 비트스트림 파일로 생성하여 bit -> bin 파일로 변환시킨다. 그후 해당 bin 파일을 SD카드의 폴더에 저장하고 이를 WARP 장비에 삽입하여 실행하면 해당 디자인 파일을 자동 설치 된다.

여기에 대한 방법은 아래의 링크를 참조하세요.

http://warpproject.org/trac/wiki/howto/SD_Config




'N.&C. > WARP v3' 카테고리의 다른 글

5-2-2. WARPLab Quick Start 정리버전  (0) 2016.05.19
5-2. WARPLab Quick Start  (0) 2016.05.04
5. WARPLab 7  (0) 2016.05.03
3-2. Introduction to the Xilinx Platform Studio (XPS)  (0) 2016.05.03
3-1-2. WARP v3 User Guide: Template Projects  (0) 2016.05.03

원문: http://warpproject.org/trac/wiki/WARPLab


Note:

XPS공부중에 WARP를 제어하기 위해서는 자일링스의 ISE를 사용하거나 Matlab으로 제어해야 함을 알게되었습니다. 따라서 유료 소프트웨어를 구매하기전 매트랩으로 어느정도까지 제어가 가능한지 알아보기 위하여 먼저 subsection 5 부터 포스팅 하기로 결정하였습니다.




WARPLab 7


WARPLab is a framework for rapid physical layer prototyping that allows for coordination of arbitrary combinations of single and multi-antenna transmit and receive nodes. The extensible framework gives users the flexibility to develop and deploy large arrays of nodes to meet any application or research need.




WARPLab 은 위의 그림과 같이 싱글 또는 여러개의 Warp 노드들을 이더넷 스위치와 연결된 PC Matlab을 이용하여 제어가 가능합니다. 그러긴 위해서는 WARPLab reference design 을 먼저 기본적인 프레임워크로 사용하기 위해서 WARP에 설치해야합니다. (설치는 자일링스 ISE+SDK를 사용)  이 reference design은  사용자 정의로 변경도 가능한 유연성을 가지기 때문에 연구를 위한 개발자들은 반드시 숙지해야 할 것입니다. reference design을 사용하여 WARP 노드를 제어 및 신호 처리 하기 위해서는 Matlab을 사용하며 이를 통해서는 엄격한 Real-time 처리까지는 불가능합니다. 



The WARPLab reference design is an implementation of the WARPLab framework that allows many physical layer designs to be constructed and tested. The reference design combines MATLAB and FPGA implementations of the WARPLab framework modules that allow for easy extensibility and customization. While the reference design uses MATLAB to control nodes and perform signal processing, it also allows applications with strict latency requirements to move time critical processing in to the FPGA. The latest WARPLab 7 reference design runs on both WARP v2 and WARP v3 hardware. Users with WARP v1 hardware should use WARPLab 6.



* WARPLab 레퍼런스 디자인이란? 다양한 물리계층 디자인을 구성하고 테스트 할수있는 하나의 프레임 워크의 실현을 의미합니다. 앞으로 소개할 디자인은 매트랩과 FPGA(WARP Board) 와의 조합으로 구성되며 간단하게 사용자가 확장하거나 수정이 가능한 형태로 제공될 것 입니다. 


앞으로의 포스팅은 아래의 순서대로 진행 됩니다.










Introduction to the Xilinx Platform Studio (XPS)

(compatible with WARP v3)


In this exercise, users will be introduced to the Xilinx Platform Studio (XPS). This tool is used by designers to build complete systems out of separate peripheral cores known as "pcores." In this exercise, user's will extend a provided template project by adding a custom pcore that implements a pseudorandom number generator (PRNG) directly in the FPGA. This core is then connected to the template project's User I/O core so it can drive random values out to LEDs and hexadecimal displays.


본 예제에서는, 자일링스 플랫폼 스튜디오 XPS를 소개합니다. 본 툴은 사용자에 의해서 pcores 로써 주변 cores와는 분리된 형태로 완벽한 시스템을 빌드 할수가 있다. 따라서 본 예제에서 사용자는 직접적으로 FPGA에서 제공하는 PRNG을 실행하여 의사난수를 생성 할수가 있다. 이는 생성된 난수값을 16진수 LED 세그먼트로 디스플레이 하는 예제 샘플이다. 


Prerequisites

    • You have a WARP v3 board
    • ESD protection for the WARP board (wrist strap, etc)
    • External USB JTAG cable and a micro USB cable for UART
    • Complete installation of ISE System Edition 13.4
    • Checked out a local copy of the WARP Repository
    • Set up a terminal on your computer using PuTTY or an alternative.
    • Familiarity with the Xilinx SDK. Make sure you have completed the Introduction to the SDK exercise.

XPS를 실행하기 위해서는 WARP 보드와 정전기 방지대책, JTAG 케이블, ISE 시스템 에디션의 설치, WARP 저장소의 Local 백업, PuTTY를 통한 터미널연결, 마지막으로 SDK에 대한 숙지가 필요합니다. 


Overview







In this exercise, we provide users with a custom peripheral core: the prng_useriosrc. This core is a pseudorandom number generator with ports that are meant to be connected to the User I/O core that is present in the template WARP design. The above figure describes is a simplified diagram of the final after adding the custom pcore. Inside the custom core there is a Linear Feedback Shift Register (LFSR) that produces a sequence of pseudorandom values. These values are then latched by a counter circuit to slow them down and make their changes visible to the naked eye when observing a board. The output of this latch is sliced up and connected to output ports on the core. All pcores have two distinct ways of getting information into and out of the peripheral:


간략한 시스템 블록 다이어그램에 대한 소개와 본 예제에 대한 설명이 명시되어있다.

prng_useriosrc 라는 메인 블록 (소스예제) 는 LFSR 선형 피드백 시프트 레지스터를 사용하여 의사난수를 생성하여 Segment를 제어하는 프로그램이다. 프로그램의 시작은 유저의 Push 버튼으로 짐작되며, 랜덤 시퀀스를 LFSR에서 생성하면 이를 래치하여 해당 출력의 MSB 나 LSB를 Hex Display 와 LEDs로 출력시킨다. 


Ports: Shown in yellow in the above figure, ports allow direct connectivity between peripherals. They can serve as inputs or outputs of the design.

Registers: Shown in red in the above figure, registers allow peripherals to be controlled by software running in a Microblaze soft processor. Registers allow the core to hang off a bus such as the Processor Local Bus (PLB) and allow custom C-code to read or write memory addresses to control the core.

The prng_useriosrc pcore has the following inputs and outputs:



포트는 내부포트(노랑)와 외부포트(초록)으로 구분되며, 하드웨어적으로 직접 연결이 가능한 핀(포트) 이다. 또한 붉은색 블락의 레지스터는 Microblaze CPU를 사용하여 소프트웨어를 통하여 제어가 가능하다. 레지스터는 PLBs 버스를 통하여 제어 및 데이터의 송수신이 이루어진다. 


Inputs


User I/O Pushbutton Port: This port is connected directly to the User I/O "up" pushbutton port. When the user presses the button on the board, the latch inside the prng_useriosrc core will stop updating the outputs. This will effectively "pause" the core and allow the user to read the current set of outputs from the LEDs and other display elements.

Capture Period Register: This register attaches to the bus and allows C-code executing inside the MicroBlaze to control how often the latch on the LFSR triggers. In effect, this is a way for C-code to control how fast the output updates occur. Note: even though we have listed this as an input to the core, this register can also be read by the C-code in order to check and see what it had been set to.


2개의 입력 포트 및 레지스터가 존재한다. 푸쉬버튼이 연결된 포트는 코어 내부의 래치 출력 업데이트를 제어할수 가 있다. (노파심에 설명을 해보자면,) 사실 이런류의 임베디트 프로그래밍을 진행해본 사람들은 잘 알겠지만, 무작정 해당버튼을 누른다고 정말 래치가 동작을 하다가 중단되고 하지는 않는다. 이는 모두다 메인 프로그램 코드에서 위와 같이 동작하도록 사전이 코딩을 해놓았기에 푸쉬 버튼을 누르면 해당 기능이 수행되는 것이다. 따라서 이와 같은 예제들을 많이 접해보고 따라해보되, 어떻게 코딩을 했으며 내가 정의하고자 하는 프로그램은 어떤 기능이 필요하고 어떻게 동작되었으면 좋을지 그리고 그런 프로그램을 코딩하기 위해서 어떤식으로 프로그램 구조를 짜야하는지를 미리 경험하는 시간이 되길 바란다. 


Outputs


Left/Right Hex Display Ports: The left and right hexadecimal displays contain seven individual on/off segments. These output ports drive 7-bit wide random numbers to the equivalent input ports on the User I/O core.

Red/Green LED Ports: The banks of red and green LEDs each contain 4 elements. These 4-bit wide random numbers drive the equivalent input ports on the User I/O core.

Captured Output Register: This register attaches to the bus and allows C-code executing inside the MicroBlaze to read the current latched output of the LFSR.

You will also notice in the diagram the green "FPGA Pins" ports. These are top-level ports that are routed out to physical pins on the FPGA. These pins are connected to other components on the WARP board. For the purpose of this exercise, we have provided this pcore as an example of a hardware peripheral you may want to integrate into your design. The Exporting pcores from System Generator exercise covers how this pcore was created.

출력 레지스트리를 통하여 FPGA 핀에 물리적인 값이 전달됩니다. 이 핀은 WARP의 다른 구성요소와 연결되어서 사용자의 목적에 맞게 제어 및 디자인 될수가 있습니다. 


Instructions

일단 여기 포스팅에서 다루는 것은 템플릿 프로젝트 (Not lite ver.) 이며, lite 버전으로 가볍게 시작하기를 권한다. FPGA의 특성상 빌드시간이 꽤 오래걸리기 때문이다.

아래의 예제 실행순서는 별것 없다. 예제 소스코드를 루트폴더에 다운로드 후 XPS에서 open하여 아래의 순서대로 빌드하면 실행이 된다. 


  1. Download either the WARP v3 Template Project. Note: We recommend using the "lite" template for this exercise as it will build the quickest.
  2. Extract the archive into a folder on your hard drive. Note: this folder must not contain any spaces in the path (this includes the the Windows desktop, as that lives in a folder known as "Documents and Settings").
  3. Navigate to this folder in Windows Explorer. Go into the SDK_workspace folder. These are the default SDK projects used in the Introduction to SDK exercise. We do not need them for this exercise. Delete the three folders in SDK_workspace (but do not delete SDK_workspace itself).
  4. Download the provided pcore. Unzip the archive and place the "prng_useriosrc_plbw_v1_02_a" folder inside the "pcores" folder in the extracted template project.
  5. Launch XPS from the Start menu. Click "Open project" and navigate to the system.xmp file from the template project. Click Open.
    • If this is the first time you have run XPS, you will receive a number of error messages saying that cores cannot be found. XPS must be told where to find the WARP SVN repository in order for it to find these files. In XPS, click Edit→Preferences. Then, under the "Application" category, click "Browse ..." under the "Global Peripheral Repository Search Path." Navigate to and select the "edk_user_repository" folder on your hard drive. If you do not have an "edk_user_repository" SVN working copy, please see our SVN documentation. After making this selection, close and reopen XPS. This step of adding the global repository path only needs to be done once per installation of the Xilinx tools.
  6. To connect the new pcore to the system, we will modify the Microprocessor Hardware Specification "system.mhs" You can find this file in the "Project" tab under "Project Files." Double-click this file to open it.

프로그램의 실행을 위해서는 아래의 자일링스사의 ISE 소프트웨어 다운로드 링크로 가서 설치를 진행하도록 하자.

생각보다 용량이 많기 때문에 시간이 많이 소요 된다. 



원문: http://warpproject.org/trac/wiki/HardwareUsersGuides/WARPv3/TemplateProjects



유저가이드에 대한 내용들은 subsection 4에서 자세히 다룰예정입니다.



WARP v3 User Guide: Template Projects

The following template projects demonstrate how to use the various peripherals on the WARP v3 board and are good starting points for your custom designs.


The projects are grouped by the version of Xilinx ISE used. We will update this page as we port the template projects to newer releases of ISE.


Important: in order to use these projects you must have a local copy of the WARP peripheral cores (pcores) and associated drivers. See http://warpproject.org/trac/wiki/edk_user_repository setup for instructions. Always update your local copy of the WARP edk_user_repository to use new template projects.


템플릿 프로젝트는 앞으로 사용자가 디자인하고자 하는 프로그램작성을 위한 좋은 스터디 예제입니다. 자일링스 뿐만 아니라 WARP 프로젝트팀은 수시로 WARP 사용을 위한 예시와 레퍼런스 디자인들을 업데이트 하기 때문에 수시로 웹페이지에 들어가서 확인해보길 권장합니다.


어쨌든 본 템플릿 프로젝트를 실행하기 위하여 먼저 WARP peripheral cores 의 복사본과 드라이버 복사본을 미리 백업해놓길 바랍니다. 관련내용은 edk_user_repository  를 참조하세요. 




Xilinx ISE 14.4 and Later


On Board Peripherals Template Project




템플릿 프로젝터는 아래의 여러 인터페이스들을 실행하는 예제입니다. 몇가지 버전들도 존재하며 최신버전은 아래의 링크에서 다운로드가 가능합니다. 각각의 버전의 릴리즈 노트를 참조해주세요.


This is an XPS/SDK project which implements peripheral cores to interface with every peripheral on the WARP v3 board, including:


  • MicroBlaze soft processor (big-endian, PLB-based design)
  • Block RAM for instruction/data memory
  • User I/O (LEDs, buttons, UART)
  • Dual Ethernet interfaces
  • MPMC for DDR3 SO-DIMM access
  • Peripherals for RF interface control
  • Timer peripheral for user code

Version information:

Project VersionISE VersionArchEDK Project Download
1.414.4MB/PLBw3_TemplateProject_OnBoardPeriphs_v1p4.zip

We recommend downloading the latest version of this project that matches the version of the ISE tools you have installed.


  • v1.4 (Mar 2014):
    • Updated project for XPS/SDK 14.4 and later (works through 14.7, the latest and last ISE release)
  • v1.3 (Feb 2013):
    • Updated w3_clock_controller to v3.01b
      • New at_boot_clock_in_valid port delays at_boot config until 200MHz clock is stable
      • CM-MMCX switches must both be 0 (down) to select off-board sampling clock source
    • Removed duplicate LOC constraints from UCF
  • v1.2 (Jan 2013):
    • Updated WARP v3 pcores to latest versions (ad_controller, clock_controller, radio_controller, ad_bridge)
    • Added support for CM-MMCX clock module and config-time clock source selection via switch
    • Renamed EEPROM controller instance to w3_iic_eeprom_onBoard, to disambiguate when another instance is used for FMC EEPROM
    • Routed 200MHz clk to w3_clock_controller "at boot" logic, to select master clock source before MMCMs attempt lock
    • Added constraints for unused bi-directional I/O for radio_controller RFC/RFD SPI SDIO (XPS forces these to pins, even when unsed)
  • v1.1 (Nov 2012)
    • Swapped LSB/MSB for DIP switch, so LSB is right-most switch
    • Updated Ethernet constraints for ETH_A MDIO signals
    • Disabled MicroBlaze hardware divider by default (C_USE_DIV = 0)
  • v1.0 (Aug 2012)
    • Initial release of template project



ISE 13.4

Please see TemplateProjects/13p4 for previous release of the template projects for XPS/SDK 13.4.

Other Projects

The XPS/SDK projects for the latest 802.11 Reference DesignWARPLab Reference Design, and OFDM Reference Design are also available. These are all more complex than the template project above but use the same tools and design flows.




그밖의 프로젝트들이 위와 같이 많이 존재하지만, 후에 우리는 802.11 레퍼런스 디자인에 대해서 집중적으로 분석해볼 예정입니다. 






+ Recent posts