일반적으로 C언어에서, 지역 변수는 함수 내에서 존재하고, 함수가 종료되는 시점에 사라지게 된다.

이때 사라지지 않고 기존의 값을 보존하게 하기 위한 keyword 가 static 이다.


static keyword를 사용하면, 지역 변수가 함수 종료 때 사라지지 않고, 값을 보존하게 된다.


주의!!! static은 전역 변수에서 사용하여, 다른 파일에서 extern 해서 사용할 수 없다.

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

Check the system's Endianness  (0) 2019.04.23
C progress printing  (0) 2018.08.07
가변 인자(variable arguments) stdarg.h  (0) 2017.12.11
extern  (0) 2017.06.21
static  (0) 2017.06.20

기회주의자도

기회를 알아볼 때나 될 수 있는 법이다.

'Life > A sentense of the day' 카테고리의 다른 글

  (0) 2018.11.22
불행한 이유  (0) 2018.11.06
추억  (0) 2018.06.20
뭐하고 있을까?  (0) 2018.06.19
처한 상황  (0) 2018.06.06

Verilog에서 보다 깔끔하면서 configurable 한 코드를 만들기 위해 generate 문을 활용할 수 있다.

일반적으로 자주 사용하는 문법은 아니지만, 긴 코드를 작성할 때 유리하다.


generate 문은 일반적인 verilog 문법과는 다르게, pre-compile 된다고 이해하면 쉽다.

(C언어에서의 전처리기 명령어(#define 등)와 비슷하다.)


generate 문에는 아래와 같이 2가지 종류가 있다.

1. generate loop

일반적으로 verilog에서는 for 문을 사용하지 않는다. Verilog에서 사용하는 for 문은 사실 generate 문의 일부이다.

loop index는 genvar로 선언하여야 하며, generate loop 내에서 선언된 wire 등은 loop iteration 간의 충돌이 일어나지 않는다.(local 변수로 이해하면 된다.)

genvar idx;

generate

for(idx = 0; idx < 3; idx = idx + 1) begin : gen_inst

wire w1, w2;

assign w1 = in1[idx] & in2[idx];

assign w2 = in1[idx] | in2[idx];

assign out[idx] = w1 & w2;

end

endgenerate

위의 코드는 아래와 같다.

wire gen_inst[0].w1, gen_inst[0].w2;

assign gen_inst[0].w1 = in1[0] & in2[0];

assign gen_inst[0].w2 = in1[0] | in2[0];

assign out[0] = gen_inst[0].w1 & gen_inst[0].w2;

wire gen_inst[1].w1, gen_inst[1].w2;

assign gen_inst[1].w1 = in1[1] & in2[1];

assign gen_inst[1].w2 = in1[1] | in2[1];

assign out[1] = gen_inst[1].w1 & gen_inst[1].w2;

wire gen_inst[2].w1, gen_inst[2].w2;

assign gen_inst[2].w1 = in1[2] & in2[2];

assign gen_inst[2].w2 = in1[2] | in2[2];

assign out[2] = gen_inst[2].w1 & gen_inst[2].w2;

2. if-generate / case-generate

if-generate와 case-generate는 코드에는 등장하지만, 조건에 따라서 실제 synthesis 되지 않는 코드를 말한다.

간단히 이해하기로는, parameter 등 constant 한 값에 의한 if / case 문에서 해당될 수 없는 구문은 애초에 없는 코드로 생각하면 된다.


주의 사항

 - generate 문은 generate 와 endgenerate 사이로 구성할 수 있으나 사실 이는 필수는 아니다.

 - generate 문은 named / unamed 둘 다 가능하나, named로 사용하는 편이 좋다.


참조: http://www.verilogpro.com/verilog-generate-configurable-rtl/

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

AXI FIFO  (0) 2020.02.13
AXI Register Slice  (0) 2020.02.12
Xilinx bootgen  (0) 2017.06.21
Xilinx SDK disable cache  (0) 2017.06.12
Xilinx Vivado IP import  (0) 2017.05.31

Linux 에서 여러 파일 간의 코드 연결을 보고자 할 때, Ctags를 활용 할 수 있다.


설치

$ sudo apt-get install ctags


태그 생성

$ ctags -R


명령어(Vim 사용 중)

 - 커서 + Ctrl + ] : 커서 위치의 tag로 이동(push to stack)

 - :ts : tag stack 확인

 - Ctrl + t : Pop stack

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

Xshell + Xming  (0) 2018.09.10
Memtester  (0) 2018.07.15
scp  (0) 2018.05.29
Systemd Service  (0) 2018.05.04
Linux tar, gz, bz2  (0) 2018.04.25

지나고 나면, 다 추억이 될 것을...

'Life > A sentense of the day' 카테고리의 다른 글

불행한 이유  (0) 2018.11.06
기회주의자  (0) 2018.07.05
뭐하고 있을까?  (0) 2018.06.19
처한 상황  (0) 2018.06.06
맥주 한 잔의 마법  (0) 2018.06.06

보스가 비서에게 일을 시키려면 뭐하는지 당연히 궁금해야지

사랑, 그게 무슨 말도 안되는 소리야 


- 김비서가 왜그럴까 4화 중에서

'Life > A sentense of the day' 카테고리의 다른 글

기회주의자  (0) 2018.07.05
추억  (0) 2018.06.20
처한 상황  (0) 2018.06.06
맥주 한 잔의 마법  (0) 2018.06.06
정답이 없다  (0) 2018.05.28

사람들은 자신이 처한 상황에서 생각을 하곤 한다.

상황이 달라지면 생각이 달라질 수 있지만,

다시 같은 상황에 몰리게 되면, 같은 생각을 할 수 도 있다.

'Life > A sentense of the day' 카테고리의 다른 글

추억  (0) 2018.06.20
뭐하고 있을까?  (0) 2018.06.19
맥주 한 잔의 마법  (0) 2018.06.06
정답이 없다  (0) 2018.05.28
근묵자흑  (0) 2018.05.23

맥주 한 잔은

나를 완전히 다른 세계로 인도할 수도 있다.

'Life > A sentense of the day' 카테고리의 다른 글

뭐하고 있을까?  (0) 2018.06.19
처한 상황  (0) 2018.06.06
정답이 없다  (0) 2018.05.28
근묵자흑  (0) 2018.05.23
다음에  (0) 2018.05.02

Ubuntu에서 Remote Desktop Client를 써 봤을 때, 매우 만족했었다.

해당 Remote Desktop Client는 Remmina인데,

Raspbian에서도 설치가 가능하다.


설치는

$ sudo apt-get install remmina


사용법은

$ remmina

윈도우 접속 하고자 하는 경우: RDP 선택 후, IP 입력하면 연결 할 수 있다.


라즈베리 파이로 돌리기에는 다소 버거울 수 있지만, 

그래도 없는 것 보다는 낫지 않을까...?하는 마음으로 켜봤는데

예상보다 훨~~씬 빠르다!!! 오히려 라즈베리파이 데스크톱 보다 빠른 느낌...?

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

Rasbian qbittorrent-nox installation  (0) 2019.11.19
SD card image backup  (0) 2018.10.12
SDcard Partition Resize  (0) 2018.08.21
Raspbian Korean(Hangul) Install  (0) 2018.05.18
Raspbian Install  (0) 2018.05.16

Linux 상에서 다른 서버의 파일을 복사해 오고자 하는 경우

scp 명령어를 활용할 수 있다.


scp 명령어는 cp와 문법이 비슷하다.

$ scp <user_id>@<ip_addess_of_source>:/<file> <user_id>@<ip_address_of_dest>:/<file_name>

scp 명령어를 사용하는 서버로(부터) 옮기고자 하는 경우에는 <user_id>@<ip_address>:를 생략 할 수 있다.


scp 명령어를 사용할 때 password를 포함하게 하는 방법

$ sshpass -p '<PASSWORD>' scp <user_id>@<ip_addess_of_source>:/<file> <user_id>@<ip_address_of_dest>:/<file_name>

※ 이렇게 사용하면 PASSWORD가 드러날 수 있으니 보안에 취약하다는 점을 유념하자.

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

Memtester  (0) 2018.07.15
Ctags  (0) 2018.07.03
Systemd Service  (0) 2018.05.04
Linux tar, gz, bz2  (0) 2018.04.25
Linux HDD mount  (0) 2018.04.06

+ Recent posts