'Programming'에 해당되는 글 1747건

  1. 2018.01.09 verilog vector instance
  2. 2018.01.08 소스 코드 포맷 적용하기
  3. 2018.01.01 verilog always
  4. 2018.01.01 verilog 2001 ** 연산자
  5. 2018.01.01 verilog 코드 분석
  6. 2017.12.26 vhdl / verilog 문법관련 링크
  7. 2017.12.24 xilinx vivado HLx / HLS
  8. 2017.12.11 VHDL과 verilog
  9. 2017.12.10 VHDL 문법 공부중 1
  10. 2017.12.08 VHDL 문법 관련
Programming/Verilog2018. 1. 9. 20:52

verilog 언어로 된 모듈을 여러개 어떻게 생성하나

일일이 이름 바꾸어서 해야 하나 고민을 했는데

동일 이름으로 생성도 가능하고

벡터로 모듈 생성이 가능하다고 한다

(그러니까 SHA256 모듈을 벡터로 생성하는 꽁수를!)


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]


genvar k;

generate for (k = 1; k <`wordsize - 1; k = k + 1)

 begin

    I2S_dff instance (.d(sd), .q(q_out[i]), .r(wsp), .en(dec_out[i]), .sck(clk));

    datareg_in = |q_out;

 end

endgenerate 

[링크 : https://electronics.stackexchange.com/.../how-to-use-generate-for-multiple-module-instantiation-in-verilog]


From Verilog-95 you can have a vector of instances:

d_flipflop ff[7:0] (A, Q, reset clk); 

[링크 : https://stackoverflow.com/questions/21615210/instantiating-multiple-modules-in-verilog]

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

베릴로그 순차적 구조적  (2) 2018.01.18
structural vs behavioral verilog  (0) 2018.01.12
verilog always  (0) 2018.01.01
verilog 2001 ** 연산자  (0) 2018.01.01
verilog 코드 분석  (0) 2018.01.01
Posted by 구차니
Programming/C Win32 MFC2018. 1. 8. 11:29

eclipse에서 하려니 먼가 잘 안되고

(한줄에 여러개 있는게 되는게 있고 안되는게 있고 그러네..)

jindent 라는 플러그인 하니 라인길이 제한이 걸려있어서 유료 사야하고


notepad++에는

tidy 플러그인 깔아야 한다는데, 플러그인 매니저가 이상해져서 깔기 빡세고


웹에서 하는 것도 있지만

외부로 코드 유출되는거 아닌가 걱정되서 쓰기 그렇고..

그리고 파일단위가 아닌 복/붙해야 하니 귀찮...

[링크 : https://codebeautify.org/c-formatter-beautifier]


리눅스에서 툴을 이용하는것들 발견.. 해봐야 할 듯

[링크 : https://askubuntu.com/questions/448497/source-code-formatter-indenter]


clang-format 쓸만하긴 한데 하위 디렉토리 자동으로 뒤져서 하는건 없다고..

[링크 : https://stackoverflow.com/questions/28896909/how-to-call-clang-format-over-a-cpp-project-folder]

'Programming > C Win32 MFC' 카테고리의 다른 글

엔디안 급 멘붕..  (0) 2018.05.29
const char *과 char * const 차이  (0) 2018.01.31
win32 시리얼 통신 LPCTSTR / LPCSTR  (0) 2017.12.07
MFC CList 선택항목 인덱스 얻기  (0) 2017.11.28
MFC CSdlierCtrl 에서 SetPos()  (0) 2017.11.28
Posted by 구차니
Programming/Verilog2018. 1. 1. 09:51

always @ (posedge

이런식으로 많이 쓰이는데

always 자체는 패러럴 구문이지만 @와 결합해서 시퀀셜 하게 쓰이는 듯 하고,

@는 event에 대한 기술이다.


3. PARALLEL STATEMENTS 

always sequential_statement


5. SEQUENTIAL STATEMENTS

@ (event [{or event}]) sequential_statement

[링크 : http://www.ece.uvic.ca/~fayez/courses/ceng465/vlogref.pdf]


다만 =는 블럭킹(sequential, block) 으로

<=는 넌블러킹(parallel, non-blocking)으로 작동하게 되는데

[링크 : https://courses.cs.washington.edu/courses/cse467/03wi/Verilog3.pdf]

[링크 : https://class.ee.washington.edu/371/peckol/doc/Always@.pdf]


always 내에서 블럭킹으로 할 경우 race condition의 위험이 있다고 한다.

[링크 : https://www.nandland.com/vhdl/tutorials/tutorial-process-part1.html]

[링크 : http://aboutmadlife.blogspot.kr/2015/01/verilog-blocking-non-blocking.html]

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

베릴로그 순차적 구조적  (2) 2018.01.18
structural vs behavioral verilog  (0) 2018.01.12
verilog vector instance  (0) 2018.01.09
verilog 2001 ** 연산자  (0) 2018.01.01
verilog 코드 분석  (0) 2018.01.01
Posted by 구차니
Programming/Verilog2018. 1. 1. 09:37

VHDL 에서는 기본으로 있었던거 같은데

** 연산자는 지수승에 대한(밑이 2) 연산자로

Verilog 2001 부터 추가되었다고 한다.

지금에 와서는 거의 모든 개발 툴에서 2001을 지원하겠지?


[링크 : http://www.asic-world.com/verilog/verilog2k1.html]

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

베릴로그 순차적 구조적  (2) 2018.01.18
structural vs behavioral verilog  (0) 2018.01.12
verilog vector instance  (0) 2018.01.09
verilog always  (0) 2018.01.01
verilog 코드 분석  (0) 2018.01.01
Posted by 구차니
Programming/Verilog2018. 1. 1. 08:24

de0-nano 가속도 센서 예제 

예제가 죄다 verilog네 -_- VHDL을 공부하려는 나의 계획은 이렇게 날아 가는건가!!!


// -------------------------------------------------------------------- // Copyright (c) 2011 by Terasic Technologies Inc. // -------------------------------------------------------------------- // // Permission: // // Terasic grants permission to use and modify this code for use // in synthesis for all Terasic Development Boards and Altera Development // Kits made by Terasic. Other use of this code, including the selling // ,duplication, or modification of any portion is strictly prohibited. // // Disclaimer: // // This VHDL/Verilog or C/C++ source code is intended as a design reference // which illustrates how these types of functions can be implemented. // It is the user's responsibility to verify their design for // consistency and functionality through the use of formal // verification methods. Terasic provides no warranty regarding the use // or functionality of this code. // // -------------------------------------------------------------------- // // Terasic Technologies Inc // 356 Fu-Shin E. Rd Sec. 1. JhuBei City, // HsinChu County, Taiwan // 302 // // web: http://www.terasic.com/ // email: support@terasic.com // // -------------------------------------------------------------------- // // Major Functions: G Sensor utilization // // -------------------------------------------------------------------- // // Revision History : // -------------------------------------------------------------------- // Ver :| Author :| Mod. Date :| Changes Made: // V1.0 :| Rosaline Lin :| 02/16/2011 :| Initial Revision // -------------------------------------------------------------------- //======================================================= // This code is generated by Terasic System Builder //======================================================= module DE0_NANO_G_Sensor( //////////// CLOCK ////////// CLOCK_50, //////////// LED ////////// LED, //////////// KEY ////////// KEY, //////////// Accelerometer and EEPROM ////////// G_SENSOR_CS_N, G_SENSOR_INT, I2C_SCLK, I2C_SDAT ); //======================================================= // PARAMETER declarations //======================================================= //======================================================= // PORT declarations //======================================================= //////////// CLOCK ////////// input CLOCK_50; //////////// LED ////////// output [7:0] LED; //////////// KEY ////////// input [1:0] KEY; //////////// Accelerometer and EEPROM ////////// output G_SENSOR_CS_N; input G_SENSOR_INT; output I2C_SCLK; inout I2C_SDAT; //======================================================= // REG/WIRE declarations //======================================================= wire dly_rst; wire spi_clk, spi_clk_out; wire [15:0] data_x; //======================================================= // Structural coding //======================================================= // Reset reset_delay u_reset_delay ( .iRSTN(KEY[0]), .iCLK(CLOCK_50), .oRST(dly_rst)); // PLL spipll u_spipll ( .areset(dly_rst), .inclk0(CLOCK_50), .c0(spi_clk), // 2MHz .c1(spi_clk_out)); // 2MHz phase shift // Initial Setting and Data Read Back spi_ee_config u_spi_ee_config ( .iRSTN(!dly_rst), .iSPI_CLK(spi_clk), .iSPI_CLK_OUT(spi_clk_out), .iG_INT2(G_SENSOR_INT), .oDATA_L(data_x[7:0]), .oDATA_H(data_x[15:8]), .SPI_SDIO(I2C_SDAT), .oSPI_CSN(G_SENSOR_CS_N), .oSPI_CLK(I2C_SCLK)); // LED led_driver u_led_driver ( .iRSTN(!dly_rst), .iCLK(CLOCK_50), .iDIG(data_x[9:0]), .iG_INT2(G_SENSOR_INT), .oLED(LED));  

endmodule 

D:\de-nano\DE0-Nano_v.1.2.3_SystemCD\Demonstration\DE0_NANO_GSensor\DE0_NANO_G_Sensor.v

D:\de-nano\DE0-Nano_v.1.2.3_SystemCD\Demonstration\DE0_NANO_GSensor\v\led_driver.v


module module_name(module_in_outs);

// 일종의 입출력 변수들 정의(타입은 아직 정의하지 않고 이름만 정의


    // module의 핀(?)에 대한 입출력 방향과 타입을 정의

    input pin_name;

    output pin_name2;

    inout pin_name3;


    // 방향 지시자 없는 내부변수 선언

    wire pin_nam4;

    reg [1:0] count;


    // 행위를 정의함 - structural coding 라고 써있음

    assign out = in;


    // 조사필요

   always@(posedge iCLK or negedge iRSTN)

   submodule sub_module_name

   (

      .sub_module_pin(main_module_pin),

   );

// module의 끝

endmodule 


wire랑 reg도 변수 타입이고 그 외에는 int, real 등의 타입도 있다고..

[링크 : http://wiki.vctec.co.kr/devboard/fpga/spartan-3a-fpga-gaebalbodeu--elbert/module]

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

베릴로그 순차적 구조적  (2) 2018.01.18
structural vs behavioral verilog  (0) 2018.01.12
verilog vector instance  (0) 2018.01.09
verilog always  (0) 2018.01.01
verilog 2001 ** 연산자  (0) 2018.01.01
Posted by 구차니
Programming/VHDL2017. 12. 26. 15:14

VHDL

[링크 : http://jyhpan.tistory.com/141]

[링크 : https://blog.naver.com/r2adne/120155040778]

+

2017.12.27

[링크 : http://blog.naver.com/PostList.nhn?blogId=pcs874&from=postList&categoryNo=22]


verilog

FB-CY6-DEV, FM-CY6S


강좌 0. Verilog HDL 문법

강좌 1. 컴파일러 사용법 및 다운로드

강좌 2. 로직 시뮬레이터 사용법

강좌 3. 로직 설계 및 시뮬레이션

강좌 4. 계층구조 설계하기 (Byte Adder)

강좌 5. LED 켜기

강좌 6. 스위치 입력 받기

강좌 7. 7-Segment 사용하기

강좌 8. FSM 설계 (스탑와치)

강좌 9. 디지털 시계 설계하기

강좌 10. ADC 사용하기 (FSM 응용) 

[링크 : http://www.newtc.co.kr/dpshop/bbs/board.php?bo_table=m43&wr_id=3]

[링크 : http://vlsi.hongik.ac.kr/lecture/%EC%8B%A4%ED%97%98/Verilog_Summary.pdf]


+

2017.12.30

[링크 : http://www.asic-world.com/verilog/vqref1.html#Verilog_Quick_Reference]

[링크 : http://www.tcnj.edu/~hernande/r/VHDL_QRC__01.pdf] vhdl quick reference

+

2017.12.31

[링크 : http://www.ece.uvic.ca/~fayez/courses/ceng465/vlogref.pdf] verilog quick reference


+

2018.01.12

[링크 : https://blog.naver.com/culonion/80022938473]

[링크 : http://www.rebas.kr/category/Programming/Verilog]

[링크 : http://bokku.exblog.jp/11785594/]


+

2018.01.19

[링크 : https://www.nandland.com/verilog/tutorials/index.html] verilog

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

xilinx vivado HLx / HLS  (0) 2017.12.24
VHDL과 verilog  (0) 2017.12.11
VHDL 문법 공부중 1  (0) 2017.12.10
VHDL 문법 관련  (0) 2017.12.08
VHDL 문법  (0) 2017.12.07
Posted by 구차니
Programming/VHDL2017. 12. 24. 11:39

HLx는 실제로 FPGA를 위한 바이너리를 만들어 내는 녀석이고

(vhdl/verilog -> bitstream)

[링크 : https://www.xilinx.com/products/design-tools/vivado.htm]


HLS는 C언어로 작성한 녀석을 VHDL이나 Verilog로 변환해주는 (High Level Synthesis) 녀석이다.

(c -> vhdl/verilog)

[링크 : https://www.xilinx.com/products/design-tools/vivado/integration/esl-design.html]


일단은.. 궁금해서 예제 파일 아무거나 해서 막 눌러봤는데

신기하네.. 굳이 VHDL이나 Verilog 배워야 할 필요가 있을가? 싶은 HLS의 존재... ㄷㄷㄷ


HLS 예제에서 FFT/IFFT를 불러봤는데 C로 되어 있고 (UI가 암만봐도.. eclipse 다?)


합성 누르면 VHDL과


Verilog로 뱉어낸다. (verilog는 아직 문법을 안봐서...)


얘는 HLx 인데 예제 프로젝트 하나 생성해서 아무생각없이 그냥 빌드하니..

헐.. 먼가 멋지게 막 나온다. ㄷㄷ


확대 확대 확대~ 막 해도 계속 확대되서 무지 신기.. ㄷㄷ


회로 구조로 보는 것도 있는데.. 단계별로 같은 내용들이 보여서 무슨 차이인지 모르겠네..


Device에서 확대해보니..

LUT랑 Slice 라는 단어가 나오는데 정말 로직 레벨에서 해당 회로의 위치 까지 파악하도록

UI가 구성되어 있는 듯하다(도대체 얼마나 많은 개발자가 갈려나갔을까 ㄷㄷ)


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

vhdl / verilog 문법관련 링크  (0) 2017.12.26
VHDL과 verilog  (0) 2017.12.11
VHDL 문법 공부중 1  (0) 2017.12.10
VHDL 문법 관련  (0) 2017.12.08
VHDL 문법  (0) 2017.12.07
Posted by 구차니
Programming/VHDL2017. 12. 11. 20:59

VHDL과 베릴로그를 검색해보니 두개가 그렇게 시기적으로 차이나는 것도 아니지만

언어적 접근 방법의 차이로 인해서 많이 갈라지게 된 듯?

VHDL은 하드웨어 적인 접근이고

Verilog는 프로그래밍 언어적인 접근이라고 하면 되려나?


VHDL

1983 DoD / ieee 1076-1987 / ada, pascal

[링크 : https://en.wikipedia.org/wiki/VHDL]

VHSIC Hardware Description Language

[링크 : https://en.wikipedia.org/wiki/VHSIC]


Verilog

1983~1984 early ,cadence design system / ieee 1364-1995 / c

Verilog is a portmanteau of the words "verification" and "logic"

[링크 : https://en.wikipedia.org/wiki/Verilog]

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

vhdl / verilog 문법관련 링크  (0) 2017.12.26
xilinx vivado HLx / HLS  (0) 2017.12.24
VHDL 문법 공부중 1  (0) 2017.12.10
VHDL 문법 관련  (0) 2017.12.08
VHDL 문법  (0) 2017.12.07
Posted by 구차니
Programming/VHDL2017. 12. 10. 23:45

VHDL 책 보고 정리중.

나중에 verilog도 한번 봐야겠다.


일단 프로그래머 입장에서 보는 차이라고 해야하나?

연산자가 의외로 많이 다르다 -ㅁ-

 C VHDL 

== 

<= 

!= 

/= 


주석(comment)는 한줄짜리만 있고 여러줄 짜리는 없는 듯 하다.

 C

 VHDL 

 //

 -- 


동작적 모델링 - process() - 순차기술문(sequential)

                     case-when

                     signal - 병행기술문(concurrent) (?)

데이터 흐름 모델링 - when-else

                            with-select-when

구조적 모델링 - component

                      port map 


signal은 내부 회로(entity)간의 연결시 사용

architecture design of vhdl_test is

    signal k : std_logic_vector(2 downto 0)

begin

end 


process는 k의 값이 변할때 마다 수행(트리거?)

process(k)

end

begin


case-when c의 switch-case에 비슷한 구성이고

default:는 when others => null에 대응된다.

case k is

      when "000" =>

              out <= 1;

              out2 <= 2;

      when "000" => D <= "00000001";

      when others => null;

end case;


with-select-when은 모든 조건에 대해서 테스트 해야 한다.

(case-when 처럼 when others가 먹히지 않는 듯)

문장의 끝이 아니라 ;가 아닌 ,로 표시됨에 주의

with s select

    y <= i(0) when "00",

    y <= i(1) when "01",

    y <= i(2) when "10",

    y <= i(3) when "11";


if - elsif - else 이며 위의 연산자에서 보았듯 =는 할당(assign)이 아닌 비교(equal) 이다.

조금 익숙하게(?) elseif 정도는 좀 해주지 -_-

if diff = -2 then

;

elsif diff = -1 then

;

else

;

endif;


동기클럭사용

falling 과 rising edge에 대응하는 if문

-- clk : std_logic;

rising_edge(clk)

if(clk'event and clk='1') then 


falling_edge(clk) 


when-else는 일종의 우선순위를 가지고 위에서 부터 비교해서 가장 위의 것이 실행된다.

(머.. if-else랑 무슨 차이가 있으려나?)

architecture ...

begin

       y <= i(0) when S="00" else

               i(1) when S="01" else

               i(2) when S="10" else

               i(3);


[링크 : http://www.hanbit.co.kr/store/books/look.php?p_code=B5175626637]



+

2017.12.27

:= 는 변수에 할당

<= 는 signal에 할당

=> 는 case 문에 대한 건데.. others => 라고 쓰는 부분들이 있어서 찾아 봐야 할 듯..

[링크 : https://stackoverflow.com/questions/7988098/vhdl-difference-between-and]

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

xilinx vivado HLx / HLS  (0) 2017.12.24
VHDL과 verilog  (0) 2017.12.11
VHDL 문법 관련  (0) 2017.12.08
VHDL 문법  (0) 2017.12.07
xilinx fpga with vhdl verilog  (0) 2017.12.02
Posted by 구차니
Programming/VHDL2017. 12. 8. 13:19

음.. 이래서 ieee1164 라고 쓰여진거였나 보군...

1364의 경웅는 verilog 추가이고.. 1164 까지는 VHDL 인 듯



[링크 : http://www.micc.unifi.it/seidenari/wp-content/uploads/2010/01/vhdl.pdf]

[링크 : http://www.ics.uci.edu/~jmoorkan/vhdlref/Synario%20VHDL%20Manual.pdf]

[링크 : http://www.srmuniv.ac.in/ramapuram/sites/ramapuram/files/EC308.pdf]

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

VHDL과 verilog  (0) 2017.12.11
VHDL 문법 공부중 1  (0) 2017.12.10
VHDL 문법  (0) 2017.12.07
xilinx fpga with vhdl verilog  (0) 2017.12.02
FPGA / CPLD 차이..?  (0) 2017.11.09
Posted by 구차니