Programming/Verilog2018. 1. 26. 16:31

정리 안해놨었나..?

왼쪽과 오른쪽이 혼용되서 쓰이는데

오른쪽은 C언어의 함수처럼, 변수(?)의 순서대로 선언하면 된다.

왼쪽은 구조체 변수 초기화 하는 느낌? 타이핑할 건 늘어나지만 순서대로 안해줘도 되니까

일장일단이 있다.(그래도 난 함수 처럼 순서대로 넣는게 편할 듯)

module dff (clk, d, q);

input clk, d;
output q;
reg q;
always @(posedge clk) q = d;
endmodule
 
module top;
reg data, clock;
wire q_out, net_1;
  dff inst_1 (.d(data), .q(net_1), .clk(clock));
  dff inst_2 (.clk(clock), .d(net_1), .q(q_out));
endmodule

module dff (clk, d, q);

input clk, d;
output q;
reg q;
always @(posedge clk) q = d;
endmodule
 
module top;
reg data, clock;
wire q_out, net_1;
  dff inst_1 (clock, data, net_1);
  dff inst_2 (clock, net_1, q_out);
endmodule


순서대로 할 경우 ,, 으로 값을 넣지 않을수 있는데 이 경우 Hi-Z 로 설정이 된다.

(net 타입이니까 Hi-Z로 된다고 써있는 듯)

example 1

module dff (clk, d, q);
input clk, d;
output q;
reg q;
always @(posedge clk) q = d;
endmodule
 
module top;
reg data, clock;
wire q_out, net_1;
  dff inst_1 (.d(data), .q(net_1), .clk(clock));
  dff inst_2 (.clk(clock), .d(net_1), .q(q_out));
endmodule

In the top module there are two instantiations of the 'dff' module. In both cases port connections are done by name, so the port order is insignificant. The first port is input port 'd', the second is output 'q' and the last is the clock in the 'inst_1'. In the dff module the order of ports is different than either of the two instantiations.

Example 2

module dff (clk, d, q);
input clk, d;
output q;
reg q;
always @(posedge clk) q = d;
endmodule
 
module top;
reg data, clock;
wire q_out, net_1;
  dff inst_1 (clock, data, net_1);
  dff inst_2 (clock, net_1, q_out);
endmodule

Example 3

dff inst_1 (clock, , net_1);

Second port is unconnected and has the value Z because it is of the net type.

Example 4

module my_module (a, b, c);
input a, b;
output c;
  assign c = a & b ;
endmodule
 
module top (a, b, c) ;
input [3:0] a, b;
output [3:0] c;
  my_module inst [3:0] (a, b, c);

endmodule 

[링크 : http://verilog.renerta.com/mobile/source/vrg00027.htm]

[링크 : https://en.wikibooks.org/wiki/Programmable_Logic/Verilog_Module_Structure]

'Programming > Verilog' 카테고리의 다른 글

Verilog HDL, paramter 와 module, 그리고 delay  (0) 2018.03.03
encrypted Verilog  (0) 2018.02.03
verliog module 선언  (0) 2018.01.25
verilog 모델링 유형  (0) 2018.01.20
verilog Concatenation, Replication operator  (0) 2018.01.19
Posted by 구차니
embeded/FPGA - ALTERA2018. 1. 26. 16:08

Nios II 코어 생성하다 보니 명령어별 cycle이 나와서 한번 어떤 명령어 인가 조사를 해보는데..

관건은.. 1 cycle이냐 2 cycle 이냐로 갈리는 Multiply Extended 명령어들!


일단 일반적인 곱셈은

MUL

Multiplies rA times rB and stores the 32 low-order bits of the product to rC. The result is the same whether the operands are treated as signed or unsigned integers.

Operation에 rC <- (rA x rB)31...0 인데.. 32비트 연산이라는 의미 같고


MULXSS

Treating rA and rB as signed integers, mulxss multiplies rA times rB, and stores the 32 high-order bits of the product to rC.

Operation 에서 rC <- ((singed)rA) x ((signed)rB))63..32

32비트를 초과하는 상위 비트에 대해서 계산을 한다는 건가?

아무튼 확장 곱셈 명령으로는 세가지가 있는데 로직을 얼마나 사용할 진 모르겠지만

Big integer 계산하는게 아니라면 2 cycle로 처리가 가능하니 굳이 안하는게 이득일 것으로 보인다.

mulxss multiply extended signed/signed

mulxsu multiply extended signed/unsigned

mulxuu multiply extended unsigned/unsigned 

[링크 : https://www.altera.com/en_US/pdfs/literature/hb/nios2/n2cpu_nii51017.pdf]



+

어라.. Nios II (Classic) Processor 를 선택하니 Nios II/s가 보이네?


'embeded > FPGA - ALTERA' 카테고리의 다른 글

Nios II 이미지 합치기 (조사)  (0) 2018.01.27
Nios II 프로그램 빌드..  (0) 2018.01.27
nios2 /e /f 별 설정  (0) 2018.01.25
my first Nios II with DE0-nano  (0) 2018.01.25
Quartus 2 Programmer Mode 조사  (0) 2018.01.23
Posted by 구차니
embeded2018. 1. 26. 16:00

아는 프로세서는 없지만.. 8051이 저~~~기 구석에 쳐박히는데

문제는 DMIPS 0.1의 1/10쯤 될까 말까? 혹은 측정 불가라는 수준 아닌가 싶다.

[링크 : http://www.ensilica.com/pdfs/White_Paper_The_right_Microcontroller_for_low-power_apps.pdf]


일단.. Cortex-m3일 것으로 보이는 STM32F4랑 비교하면 gcc-arm/gcc-avr로 약 4배 정도 성능 차이가 발생한다.

(검색해보니 cortex-m4 계열)

STM32F4:            902,       gcc-arm

AVR90USB1286:  237,       gcc-avr 

[링크 : https://www.eevblog.com/forum/microcontrollers/dhrystone-2-1-on-mcus/]



AVR쪽은 데이터시트 상으로 DMIPS 수치가 없다. 일단 MIPS뿐.. 정량적 비교는 무리

AT90USB 1MIPS/1MHz

[링크 : http://ww1.microchip.com/downloads/en/DeviceDoc/doc7707.pdf]



Dhrystone 계산법을 모르겠네.. 첫줄에서 둘째줄로 가는데

반대로 계산해보면 70Mhz 정도 되는 것 같은데 40MHz TSMC process...???

내가 아는 반올림이랑 방법이 다른가?

[링크 : https://www.eembc.org/techlit/datasheets/dhrystone_wp.pdf]



x86과 arm의 DMIPS인데.. 단위가 훅 커지네..

 Raspberry Pi           Linux                   

  ARM  1176      700     3.6.11      847          

  ARM  1176     1000     3.6.11     1226          


  Raspberry Pi 2                                  

  ARM V7A       900      3.18.5     1538          

  ARM v7A      1000      3.18.5     1694          

 gcc 4.8                                        

  ARM V7A       900      3.18.5     1667          

  ARM V7A      1000      3.18.5     1852          


  Raspberry Pi 3, 32 Bit                          

  ARM v8-A53   1200      4.1.19     2201          

  gcc 4.8                                         

  ARM v8-A53   1200      4.1.19     2469          


  Raspberry Pi 3, 64 Bit                          

  OpenSuse                                        

  ARM v8-A53   1200      4.4.36     3536          

  Gentoo                                          

  ARM v8-A53   1200      4.10.0     3475           

[링크 : http://www.roylongbottom.org.uk/dhrystone%20results.htm]


'embeded' 카테고리의 다른 글

udoo 보드  (0) 2018.11.29
아싸~ 득템  (7) 2018.07.16
프로그램 영역(code) 변수 저장하기  (0) 2018.01.15
USB UART - CH340  (2) 2017.10.30
nuvoton cortex-m0 ISD9160 LDROM  (0) 2017.10.17
Posted by 구차니

혹시나 했는데 역시나 있네 -ㅁ-

헤드만 바꾸면 3축 CNC니까

일단 5축 CNC에 FDM 방식 노즐 다는 녀석도 있는 듯


[링크 : https://blog.naver.com/elecraft/221044141820] 자작(?) CNC + 라즈베리 파이

[링크 : http://mak2awish.tistory.com/194]

[링크 : https://blog.naver.com/dev4unet/220916270027]

[링크 : http://yoo7577.tistory.com/450] 위에랑 같은거


[링크 : http://bbs.ruliweb.com/news/board/1003/read/1670766] 5축

Posted by 구차니

솔찍히 말해서 3%를 얻더라도, 거부하면 파헤칠수 없는게 아니냐? 싶어서

비용대비 효용이라던가, 가능성 면에서 낮게 보긴 했는데

내부 분열(?)로 먹튀화 되는게 아닌가 생각이 드네

나쁘게 말하면 고작(?) 150억에 이 큰 사기를 친거 아니냐 싶어지는데

제1차 이사회 개최

2017년 11월 3일 오후 6시, 서울 프레스센터 엠바고홀에서 이사 6명, 집행위원장 및 집행위원 4명, 사무국 1명 등 참석하여 조직 및 사업계획, 예산안 그리고 사무실 마련에 대하여 심의 의결. 

[링크 : http://showmethemoney.or.kr/소개/]


150억 모금한 '플랜다스의 계'.."다스 주식 안 산다"

[링크 : http://v.media.daum.net/v/20180125203002521]


김어준 "'플랜다스의 계'로 모인 150억원, 원하면 전액 환불해야"

[링크 : http://v.media.daum.net/v/20180126092409487]

[링크 : http://showmethemoney.or.kr/참여와-소통/?uid=9787&mod=document&pageid=1] 공지

Posted by 구차니
embeded/FPGA - ALTERA2018. 1. 25. 22:52

Nios 2 core 설정을 하는데

economic과 fast 두 가지가 가능하다.


일단 e는 LE를 최소화 하는 녀석이라 그런지 performance 항목이 참.. 암울하게 나온다.


fast로 설정하면 multiplier 정도는 추가가 되는지 1 클럭이 끝나고 shift와 rotate도 1 클럭에 끝난다.


곱셈 구현을 32bit 멀티플라이어로 선택하면 1클럭에 끝나서 가장 빠르긴 한데


Cyclone 4 E 에서는 32bit multiplier를 구현 할 수 없는지 경고가 뜬다.


아무튼 Auto 보다 Manual로 선택해서 이것저것 넣으면 곱셈 확장 2클럭까지 올라는 가는데

저 명령어들이 얼마나 쓰일려나?



+

nios 2/e는 캐쉬 자체가 지원하지 않는다. 그래서 경고가 하나 줄었던 거군


nios 2/f는 캐쉬 설정이 가능한데

기본값으로 i-cache가 4k d-cache가 2k 라 에러가 발생한다.


i-cache를 4k로 하면 해결될 것 같으나, 메모리 공간이 안 맞대서 일단 2k 2k로 설정하면 해결


Posted by 구차니
embeded/FPGA - ALTERA2018. 1. 25. 22:42

My_First_NiosII_Qsys.pdf

인데 이름이 바뀌었으니 다른 걸로 ㅋㅋ


Tools - Platform Designer 실행


그럼 아래와 같은 화면이 뜨는데 먼지.. 모르겠다 -ㅁ-


추가할게 nois 2 니까 좌측의 IP catalog 에서 검색을 하거나

Processors and Peripherals - Embedded Processors - Nios II Processor를 선택


설정 마법사 비스므리한게 뜨는데 귀찮으니 Finish! 

(아니 설명서에 그렇게 써있다고...)


먼가 에러 뿜뿜하는데 일단 무시하고 우클릭 rename으로 이름을 바꾸어 보고


핀을 어따 꽂아야 할지 모르겠지만 아무튼 JTAG을 연결하라네?

Interface Protocols - Serial - JTAG UART 를 골라서 추가!


먼진 모르겠다 ㅋㅋ 경고 하나 뜨는데 일단 무시하고 Finish!


으으 에러 뿜뿜


무시하고 지나갔는데 선을 점을 찍으면 선이 연결된다고 써있네?

아무튼 회로에서 점을 찍으면 연결된다. clk 끼리 연결해주면 일단 장치가 작동되도록 연결되고

에러나 경고가 하나씩 숑숑 사라진다.

11. Connect the clk and clk_reset as shown in Figure 1-20. (clicking the hollow dots on the
connection line. The dots become solid indicatingthe ports are connected.)
 


에러가 안사라져서 보니.. I-Cache / D-Cache 나오길래

오른쪽의 Hierachy 에서 내가 생성했던 nios 2를 우클릭해서 Edit를 눌러 처음에 추가할때 뜨던

설치 마법사(?)를 띄운다음에 하나하나 보니..

"Caches and Memory Interfaces" 에 Instruction Cache가 4K Data Cache가 2K 로 설정이 되어있어서 그런건가 보네

(귀찮으면 nios 2/e로 설정! 캐쉬가 없어서 성능도 하락! LE도 조금 쓴다!)


연산자 가속 관련인데.. 그래도 하드웨어 multiplier는 존재해서 1클럭에 끝난다.

이것저것 설정하면 다른 명령어들도 빠르게 가능하지만.. multiplier가 divider랑 같은 하드웨어 로직 쓰는게 아니었나?


On-Chip Memory (RAM or ROM)을 추가하라는데 위치가 바뀌었다.

Basic Fuctions - On Chip Memory - On-Chip Memory (RAM or ROM)


졸리고 잘 시간이라 일단 여기 까지 하고 Finish!


+

2018.01.26

하라는대로 이것저것 다 추가하는데 overlap 어쩌구 에러가 뿜뿜!


System - Assign Base Addresses 를 실행하면


장치들의 중복되었던 MMIO들이 정리 되면서 에러 해결!


+

2018.01.26


위에서 unsaved.qsys로 저장을 하면 모듈 이름은 파일 이름으로 생성된다.

qpf가 있던 곳에 파일명 폴더가 생기고(unsaved로 했으니 폴더도 unsaved)

그 아래의 synthesis 폴더에 qip 확장자를 프로젝트에 추가해주면 해당 모듈을 사용할 수 있게 된다.


그런데...

export 상에 변수들이 생성되는데 이거랑 영 다른 이름으로 생성이 된다.. 원인은 좀 나중에 찾아보고..

그리고 기본으로 눌러서 생성하면 reset의 export가 비어있게 되니

필요하다면 더블클릭해서 reset으로 생성하게 해주어야 한다.


아무튼 생성된 파일을 보면 이렇게 세개의 외부 입력이 존재하게 되고

module unsaved (

input  wire       clk_clk,                          //                       clk.clk

output wire [7:0] pio_0_external_connection_export, // pio_0_external_connection.export

input  wire       reset_reset_n                     //                     reset.reset_n

);


메인 코드에 이렇게 넣어 주면 생성이 되어야 하는데..

//=======================================================

//  Structural coding

//=======================================================

unsaved nios2_inst(.clk_clk (CLOCK_50), .pio_0_external_connection_export(LED), .reset_reset_n(1'b1)); 


멀 잘못했나 제대로 컴파일이 안되네 ㅠㅠ

음.. 메시지를 잘 보니. 웬지.. 64KB RAM 생성해서 그런 듯.. 그래서 예제에서 32KB로 생성했나 보다.

Error (170040): Can't place all RAM cells in design

Info (170034): Selected device has 66 memory locations of type M9K. The current design requires 69 memory locations of type M9K to successfully fit.

Info (170033): Memory usage required for the design in the current device: 105% M9K memory block locations required

Info (170190): Fitter placement preparation operations ending: elapsed time is 00:00:00

Info (11888): Total time spent on timing analysis during the Fitter is 0.04 seconds.

Error (171000): Can't fit design in device


아무튼 플랫폼 빌더를 통해서 Nios II 코어 생성까지는 완료!

이제 eclipse를 통해서 여기 들어갈 프로그램 작성하는 것과 jic 파일에 통합하는 것

그리고 다른 예제로 보이던 아두이노 처럼 쓰는 방법까지 해보면 될 듯!


먼가 쓸데없이 간지나는(?) Chip Planner 사진으로 Chapter 1 끝!



+

여러개 생성을 해보려는데 처음에는 LED가 복수로 사용될 수 없다고 해서 삭제하고

다시 빌드해보니

unsaved nios2_inst0(.clk_clk (CLOCK_50), .pio_0_external_connection_export(LED), .reset_reset_n(1'b1));

unsaved nios2_inst1(.clk_clk (CLOCK_50), .reset_reset_n(1'b1));

unsaved nios2_inst2(.clk_clk (CLOCK_50), .reset_reset_n(1'b1));

unsaved nios2_inst3(.clk_clk (CLOCK_50), .reset_reset_n(1'b1)); 


아까랑 비슷하면서도 먼가 다른 에러가 뜬다.

웬지.. 32K가 한계라서 4개 생성해보려면.. 8K로 더 줄여야 하려나?

그리고.. RAM은 말그대로 FPGA 내부에 있는 HW IP로 구성된 SRAM을 사용하나보네..

Error (170048): Selected device has 66 RAM location(s) of type M9K.  However, the current design needs more than 66 to successfully fit

Info (170057): List of RAM cells constrained to M9K locations

Info (170190): Fitter placement preparation operations ending: elapsed time is 00:00:00

Info (11888): Total time spent on timing analysis during the Fitter is 0.17 seconds.

Error (171000): Can't fit design in device


The embedded memory structure consists of columns of M9K memory blocks that you can configure to provide various memory functions, such as RAM, shift registers, ROM, and FIFO buffers.

[링크 : https://www.altera.com/en_US/pdfs/literature/hb/cyclone-iv/cyiv-51003.pdf]

Posted by 구차니
Programming/Verilog2018. 1. 25. 22:02

module에 변수(?) 선언하는 방법으로 두가지가 존재한다.

하나는 C언어 함수 처럼, 방향과 변수명을 지정해주는 것이고

다른 하나는 모듈에 사용할 핀 이름만 선언하고 방향을 지정해주는 것이다.


개인적으로는 C 스타일의 모듈 변수 선언에 방향을 넣는게 나을 것으로 보인다.


module DE0_NANO(

input CLOCK_50

);

endmodule


module DE0_NANO(

CLOCK_50

);

input           CLOCK_50;

endmodule


'Programming > Verilog' 카테고리의 다른 글

encrypted Verilog  (0) 2018.02.03
verilog module instantiate  (0) 2018.01.26
verilog 모델링 유형  (0) 2018.01.20
verilog Concatenation, Replication operator  (0) 2018.01.19
verilog unary reduction operator와 bitwise operator  (0) 2018.01.19
Posted by 구차니
개소리 왈왈/블로그2018. 1. 24. 19:04

이상하게 비공개가 자꾸 풀리는 듯한 문제가 있어서 문의했는데

일단.. 이런 경우가 가능하다고 하니 조금은 더 지켜 봐야 할 듯.


참고로 카테고리를 특정 주제로 발행하도록 연결해둔 경우 

연결된 카테고리를 선택하면 주제가 선택되면서 공개 상태로 전환되는 점 알려 드립니다. 



근데 일단 비공개로 쓰여지고 수정하면 바뀌어 버리는거라

조금은 더 주의깊게 봐야겠네..

'개소리 왈왈 > 블로그' 카테고리의 다른 글

어? 티스토리 이상하다?  (0) 2018.02.08
구글 애널리틱스 - 유입 키워드  (0) 2018.02.06
네이버 기부  (0) 2018.01.22
티스토리 희한한 버그 발견  (0) 2018.01.14
블로그 무슨일 났나 -ㅁ-?  (0) 2018.01.06
Posted by 구차니
Microsoft/Office2018. 1. 24. 13:29

ctrl-alt-v


단축키 드럽다...

근데 우클릭 - 선택하여 붙여넣기 보다는 조금 편하긴 한데

미묘한 수준이라 이거 참...


[링크 : https://support.office.com/ko-kr/article/선택하여-붙여넣기-옵션의-바로-가기-키...c]

Posted by 구차니