336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

FPGA의뢰는 instructables.tistory.com/64 에 댓글주세요.




Favicon of search.naver.com [vhdl 프로젝트 의뢰]

[jtag 방식 단점

[verilog 수치 표현]

[verilog 하이 임피던스]

[modelsim half] 

[verilog 문법@(posedge clk) 의미] :: Active High에 동작시키겠다는 의미이다.

[quartus 핀할당] 

[verilog 데이터 타입] 

[vhdl usb 모듈] :: ▶LINK 이 제춤을 구매하시면 됩니다.(의뢰 댓글 환영입니다.)



Google

[fpga 프로그래밍 강좌] :: 강좌 문의 환영합니다.




(Lecture 01 참고)

module 이름 = 파일명과 일치시킬것 (Compile해서 Error 없나 체크)

Assignments >> Pin Planner 에서 핀 설정

다시 Compile 할것

drivers/usb-blaster 폴더를 찾아서 드라이버를 설치 (▶참고링크)


FM-CY6S_Manual.pdf

▲PINOUT 포함

각 LED에 연결된 저항 680Ω

LED[7] LED[6] LED[5] LED[4] LED[3] LED[2] LED[1] LED[0]

238 237 236 235 234 233 226 225

SW 118,119,120



Favicon of search.daum.net [FPGA 강좌]


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


NTC_FPGA_lecture_00.pdf

VHDL = Verilog HDL

▼다음 내용들을 한 세트로 기억하면 좋다.

module Half_Adder(sum, c_out, a, b);    //모듈이름 Half_Adder(파라미터들)

input a, b;                //입력포트 선언

output sum, c_out;    //출력포트 선언

wire    c_out;            //데이터타입 선언

reg    sum;            //데이터타입 선언(wire, reg, parameter 들이 있다.)

assign c_out <= a&b;        //a와b를 &연산하여 c_out에 담는다.

always @ (a or b)

if(a == b)

sum <= 1'b0;

else

sum <= 1'b1;

endmodule        //하나의 모듈선언을 끝냈다. ....C언어의 method라고 이해하시면 된다.



Verilog에서 사용하는 데이터형은 red(=레지스터), wire(=와이어), parameter(=파라미터)가 있다.

3.1.1 레지스터

reg        sum;    //1비트 레지스터

red  [7:0] bus;    //8비트 레지스터


3.1.2 와이어

wire        c_out;       //1비트 wire

wire [7:0] data;        //8비트 wire

wire        msb=data[7];    //data[7]를 msb로 재정의


3.1.3 파라미터

parameter    SIZE=16;            //정수로 파라미터 정의

reg[SIZE-1:0]    A_BUS;            //파라미터 값을 이용

parameter    S_IDLE=4'b0001;    //4비트로 파라미터 정의



3.2 논리/수치 표현

Verilog에서는 논리값을 0,1,x,z로 나타낼 수 있다.

0,1은 각각 논리0,1 이며

x는 알 수 없는 값, z는 하이 임피던스 상태로 값이 인가되지 않음을 의미한다.

ex) data=8'b0000_zzzz        //data변수 8 bit LSB에 하이임피던스 Z 인가.

//여기서 b는 Binary이다.

숫자 표현방식

data = 8'b0011_0101;        //53(Binary) .... 표기법 주의

data = 8'd53;                    //53(Decimal)

data = 8'h35;                    //53(Hex) .... 표기법 주의




4.1 산술연산

덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%)와 같은 기본적인 산술 연산을 지원합니다.

4.2 논리연산

AND(&&), OR(||), NOT(!)

4.2.2 비교연산자

>, >=, <, <=, ==, !=

(크다, 크거나같다, 작다, 작거나같다, 같다, Not Equal)

4.2.3 비트연산자 (=Bitwise Operator) (★논리연산자와 구분할것)

AND(&), OR(|), Invert(~), XOR(^)

a=4'b0101;    b=4'b0011; 일때

c = a & b;         // c = 4’b0001;

c = a | b;          // c = 4’b0111;

c = a ^ b;         // c = 4’b0110;

c = ~ a;             // c = 4’b1010;

4.2.4 리덕션 연산자

ex) even_parity = ^data[7:0];    //짝수 패리티 검출

all_one_flag = &data[7:0];    //8'hff 일때 1 출력

all_zero_flag = ~|data[7:0];    //8'h00 일때 1 출력(Zero Flag)




NTC_FPGA_lecture_01.pdf

(Quartus Lite 사용법)

(프로젝트생성 >> 컴파일 >> 핀매핑 >> 보드에 다운로드)

www.Altera.com에서 Quartus II Web Edition과 ModelSim을 다운받는다.

(▶바로가기 링크)



File >> New Project Wizard
Next
Directory Name과 Project Name을 English(without any spaces)로 작성후 Next
(Project Name은 코드상 Module명과 일치한다.)
Next
Family는 Cyclone Name은 EP1C6Q240을 선택 (FM-CY6S일 경우)
EDA Tool Settings에서 Design Entry/SynthesisSimulation을 각각
Design CompilerModelSim-Altera로 Setting한다.
Formats은 사용언어이므로 Verilog HDL로 설정해준다.


Next.
Finish.

File >> New
Design Files에서 Verilog HDL File을 선택

OK.

코드작성후 아까 New Project Wizard에서 생성한 폴더에 저장한다.

그리고 컴파일을 하면 Error가 발생할 것이다.



아래 그림처럼 Settings로 들어가서

Formal Verification에서 Tool name을 None으로 바꿔주야한다. 

그래야 Compile시 Error가 사라진다.





사용언어 선택 (VHDL이므로 Verilog HDL File을 선택한다.)

▲오른쪽에서 4번째 버튼을 누른다.(Programmer)

▲Auto Detect버튼을 누르면 위 그림처럼 Chip이 감지된다.

이 상태에서 File을 더블클릭하고 sof파일을 얹어줘야 Start버튼이 활성화된다.

(File//Device//Checksum//Usercode//....  이렇게 써있는곳에서 File을 더블클릭)

Mode는 JTAG방식으로 해두고 Start버튼을 눌러줘야 얹을 수 있다.

혹시 Auto Detect가 비활성화 상태라면

USB Blaster가 인식이 안된 상태이다.

장치관리자로 가서

C:\altera\10.1\quartus\drivers\usb-blaster 여기 경로로 지정해주고

나머지 순서는 (▶LINK) 를 참고하면 된다.


참고로...

*.pof는 Active Serial Programming 방식으로 ROM에 저장되서, 전원을 제거해도 코딩이 저장된다.





LED Blinking.txt

▼▼▼▼▼▼▼▼▼

module test_led (clk, reset, module_led);

input     clk, reset;                //입력

output   module_led;            //출력

reg        [31:0]    counter;

always @(posedge clk)          //Active High

if(!reset)                        //If reset is not pressed

counter <=0;

else

counter <= counter+1;

assign module_led = counter[23];

endmodule

▲▲▲▲▲▲▲▲▲



Quartus에서는 Ctrl+L 이 Compilation 단툭키이다.


ToolBar에서 Assignments >> Pins에서 핀할당들을 확인한다.

Location은 실제 Board상에 연결되있는 pin number이다.

▼아래와 같이 setting 한다. & Save it.

CLk        : PIN_28

RESET    :  PIN_1

LED        : PIN_225


다시 Ctrl+L을 눌러서 Compile 한다.



FPGA에 Download하는 방법에는 2가지가 있다.

1.JTAG방식 : 전원공급중에는 동작하지만 꺼지면 다운로드했던것들이 날아간다.(Volitile)

2.ROM방식 : 속도가 느린 단점이 있지만 전원을 차단해도 Data가 보존된다.



NTC_FPGA_lecture_02.pdf

시뮬레이터

Quartus II Wed Edition은 내장되어있는 시뮬레이터는 파형을 GUI 환경에서 만들 수 있어

편리한 장점이 있다.

정확하지만 매번 합성해야하는 단점이 있다.

ModelSim-Altera는 합성없이 시뮬레이션하는 장점이 있다.(타이밍 정확도는 좀 떨어진다.)


TIP

ModelSim으로 먼저 시뮬레이션을 돌리고, 마지막 테스트 단계에서 Quartus II에서 시뮬레이션을 하길 권한다.


▼▼▼▼▼▼▼▼▼▼

module test_led (clk, reset, led_out);

input    clk, reset;

output [7:0]    led_out;

wire [7:0] led_out;            //데이터 타입은 red, wire, parameter 로 나뉜다.

reg [27:0]    counter;

always @(posedge clk)

if(!reset)

counter <= 0;

else

counter <= counter+1;

assign led_out[7:0] = counter[9:2];

endmodule

▲▲▲▲▲▲▲▲▲▲


timescale 1ns/10ps

module tb_test_led;

reg clk,reset;

wire[7:0] led_out;

initial

begin

#0 reset = 0;

#20 reset = 1;

end


initial

begin

#0 clk = 0;

end

always

#5    clk = ~clk


test_led ul

(

.clk(clk),

.reset(reset)

.led_out(led_out);

endmodule

)




NTC_FPGA_lecture_03.pdf

로직설계 : 시뮬레이션 단계에서 필요하다.

Verilog HDL로 작성한 기본단위 = 모듈


▼▼▼▼▼

'timescale 1ns/10ps

module tb_test_led;    //모듈 선언

reg clk, reset;    //Input Signal을 발생시키기위해 clk, reset을 register로 선언

wire[7:0] led_out;    //출력신호를 wire형으로 선언


initial    //▼reset신호 인가

begin

#0 reset=0;

#20 reset=1;

end


initial    //▼clk신호 인가

begin

#0 clk=0;

forever

#5 clk=~clk;

end


test_led u1

(

.clk(clk),

.reset(reset),

.led_out(led_out)

);

endmodule

▲▲▲▲▲



NTC_FPGA_lecture_04.pdf

Full Adder설계


NTC_FPGA_lecture_05.pdf

LED켜고끄기 (★) Shift Register

FM-CY6S기반


▼▼▼▼▼

module test_led (clk, reset, board_led, module_led);

input    clk, reset;

output [7:0] board_led;

output [7:0] module_led;

reg [7:0] board_led;

reg [31:0] clk_count;

always @(posedge clk)

if(!reset)

clk_count <= 0;

else

clk_count <= clk_count + 1;

always @(posedge clk)

if(!reset)

board_led <= 0;

else

board_led <= clk_count[29:22];

assign module_led = ~clk_count[29:22];

endmodule

▲▲▲▲▲



NTC_FPGA_lecture_06.pdf

예제 소스 (always 문 사용)

SW pin 87 / LED pin 68 (코드상에선 핀번호 언급이 없다.)

▼▼▼▼▼▼▼▼▼▼

module test_led ( clk, reset, board_sw, board_led );

input clk, reset;

input board_sw;

output board_led;

reg board_led;

always @(posedge clk)

if(!reset)

board_led <= 0;

else

if(board_sw == 1)

board_led <= 1;

else

board_led <= 0;

endmodule

▲▲▲▲▲▲▲▲▲▲



NTC_FPGA_lecture_07.pdf

7 segment



NTC_FPGA_lecture_08.pdf

NTC_FPGA_lecture_09.pdf



NTC_FPGA_lecture_10.pdf

ADC

Posted by ElectricShock
:
BLOG main image
잡동사니들(지극히 개인취향인...) (다른글에도 댓글 부탁해요♥) You May Leave English Messages on GuestBook. by ElectricShock

공지사항

카테고리

분류 전체보기 (782)
Programming(=프로그래밍) (3)
MiDi (2)
Animation (4)
Blender (3D Graphic Program.. (10)
Blendtuts.com (Series) (1)
Blender 기초 팁들 (2)
Processing (디지털미디어과) (2)
Music (1)
Books in the world (0)
Communication(CAN, UART, et.. (12)
MCU Examples (PIC 기반) (7)
Transistor (1)
Mikro C Pro (11)
Mikro Pascal (1)
Proton IDE (0)
Robot (0)
Swift 3D (1)
Dummies Series (1)
All about Hacking (0)
제2 외국어 (1)
PIC 해외서적들 (3)
AVR (25)
PIC (MikroC) (MPLAB) (4)
Assembly (2)
ARM (3)
Arduino (26)
PSpice (1)
Proteus ISIS (14)
CodeVision (2)
FPGA (15)
MPLAB (24)
PCB (the Procedure) (15)
3D Printer (5)
PICKIT3 (6)
Matlab (11)
RaspBerry PI (15)
BeagleBone (1)
Android Studio (17)
졸업작품 (172)
Korea History (0)
Issue(사회) (73)
Multimeter 리뷰 (1)
Oscilloscope (1)
A (34)
B (19)
J (6)
C (32)
P (12)
T (37)
H (12)
I (12)
M (44)
R (5)
E (5)
F (2)
D (9)
O (2)
L (7)
S (9)
W (2)
V (6)
G (14)
Visual C++ or Visual Studio (2)
Android App Development (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백