embeded/FPGA - ALTERA2018. 6. 28. 16:24

책에서 본거 처럼(구버전 기준이긴 했지만)

최대 작동 클럭이 rpm 미터 처럼 똭 뜨지 않아서 찾아 보는중


timequest는 구버전에서의 time analzyer의 상품명(?) 이런건가?

The TimeQuest timing analyzer is a powerful ASIC-style timing analysis tool that validates the timing performance of all logic in a design using industry standard constraint, analysis, and reporting methodology 


Synopsis Design Constraints (SDC)

tool command language (Tcl)

[링크 : https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/manual/mnl_sdctmq.pdf]


먼가 찾아서 막 누르다 보니 이런게 나오네 -ㅁ-?

[링크 : ftp://ftp.altera.com/up/pub/Intel_Material/15.1/Tutorials/VHDL/Timequest.pdf]

[링크 : https://www.altera.com/en_US/pdfs/literature/ug/ug_tq_tutorial.pdf]


암튼 현재로서는 Timing Analyzer로만 표기가 된다.


컴파일 하다 보면 아래와 같은 Timing Analyzer 항목이 보이는데


타이밍 모델은 온도에 따른 작동 속도가 있고

speed grade별로 시뮬레이션을 하는데 영향을 주는 요소인 것으로 보인다.

speed grade / supply voltage / junction temperature

 Intel FPGAs must operate in a continuum of conditions. 

 These conditions include the die junction temperature, which varies depending upon the design's requirements. Commercial parts have a legal range of 0°C to 85°C and industrial parts have a legal range of -40°C to 100°C. There are even wider temperature ranges, such as those for automotive and military devices. 

 Another aspect of the operating conditions is the voltage supply levels. The most critical voltages for maintaining FPGA performance is the Vcc and the various I/O supplies. Each of the supply voltages has a legal operating range. For example, a subset of Stratix® IV FPGAs has a valid Vcc range of 0.87 V to 0.93 V. 

 The third aspect of the operating conditions is the relative speed of each FPGA versus the limit of the speed grade with which it is marked. This is one aspect that the designer has no control over. It should also be noted that devices within one speed grade can still differ slightly in performance, predominantly due to variation in the manufacturing process. All devices, however, are guaranteed to be faster than the limit of the speed grade.

[링크 : https://www.altera.com/en_US/pdfs/literature/wp/wp-01139-timing-model.pdf]

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

APEX FPGA quartus 지원 버전  (0) 2020.06.22
지름신 쫒아내기  (0) 2020.06.19
altera quartus2 simulation 도움말  (0) 2018.06.28
modelsim 시뮬레이션과 initial  (0) 2018.06.27
modelsim 길이 측정하기  (0) 2018.06.27
Posted by 구차니
embeded/FPGA - ALTERA2018. 6. 28. 14:21

C:\intelFPGA_lite\18.0\quartus\common\help

경로에 pdf로 존재한다.


tutorial_quartusii_simulation_verilog.pdf

내용을 정리하자면


Step 1. Quartus2에서 New 하고 나서 Verification/Debugging Files에 

University Program VWF를 선택하여 추가


Step 2. 아래와 같은 시뮬레이션 웨이브폼 에디터가 똭!


Step 3. 우측 패널에 우클릭하여 노드나 버스를 추가하는데


Step 4. 수동으로 추가는 불가능하고 "Node Finder"를 통해서 찾아서 추가해야 한다.


Step 5. 처음에는 아무것도 안나오는데 List를 누르면 전체 핀 목록이 뜬다.


Step 6. 모니터링 할 노드들을 추가해주고 나면 아래와 같이 뜨는데

일단 클럭이 있어야 작동하는 녀석들이 많으니 위에 시계모양 아이콘을 누르면(Overwrite Clock)


Step 7. 클럭을 쓸수 있는데 망할(?) Hz 단위가 아니라 시간 단위니 적절히 계산해서 넣어준다

(50MHz는 Period 20ns)


Step 8. 그럼 아래와 같이 클럭이 표현된다.


Step 9. 시뮬레이션을 하려면 Quartus 2 옵션 설정에서 EDA 툴을 설정해주어야 하는데

설치시에 ModelSim Altera Starter 버전을 설치했다면 아래 경로에서 찾으면 된다.


Step 10. 그래프(?)의 그리드 크기는 Edit - Grid Size에서 설정하는데

그리드는 보여주기 위한 시간 단위이다.


1us 정도가 한계인데 단위를 바꾸어서 해봐도 이걸 늘리는 법은 모르겠다.


Step 11. 시뮬레이션 시간은 End Time으로 설정되는데

최대 100us 까지 밖에 설정을 할 수 없도록 되어 있는 것으로 보인다.


Step 12. 아무튼 설정할거 했으면 Simulation 에서 Run 으로 시작하는건 누르면 되는데


상단 아이콘 바에도 있으니 편한대로 하면 된다.


Step 13. 시뮬레이션을 누르면 아래와 같이 vwf 파일 저장안되었다고 경고 뜨는데

괜히 다른 이름으로 바꾸면 실행안되니 그냥 기본값으로 저장을 해주는게 속 편하다


Step 14. 아무튼 저정하고 나면 아래와 같이 테스트벤치를 생성해서 알아서 돌리는데



Step 15. 한참을 먼가 하고 나면 아래와 같이 sim.vwf 확장자로 다른 창이 뜬다.

(근데 멀 잘못했나.. 영 안뜨네?)


아무튼.. 왜 안되는지는 좀 더 고민해봐야 겠네... ㅠㅠ

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

지름신 쫒아내기  (0) 2020.06.19
timequest time analyzer?  (0) 2018.06.28
modelsim 시뮬레이션과 initial  (0) 2018.06.27
modelsim 길이 측정하기  (0) 2018.06.27
de0-nano LVDS  (0) 2018.06.26
Posted by 구차니
embeded/FPGA - ALTERA2018. 6. 27. 13:47

당연히(?) initial은 있어야 하는데

모듈내에서 사용하는 reg 변수들에 대해서도 처리가 되어 있지 않으면

값이 X가 나오면서 garbage 값이라 처리를 못하는 것으로 보인다.


예전에 구한 소스인데, 시뮬레이션 안되던거 혹시나 해서

모듈내에 사용되는 reg 변수를 0으로 초기화 해주니 시뮬레이션이 잘 진행된다.

module vga640x480(

input clk,

input rst,

output [7:0] LED,

output reg hsync,

output reg vsync,

output [3:0] r,

output [3:0] g,

output [3:0] b

);


reg clk25;

reg [9:0] horizontal_counter;

reg [9:0] vertical_counter;


reg [9:0] X;

reg [9:0] Y;


wire [7:0] red;

wire [7:0] green;

wire [7:0] blue;


initial

begin

horizontal_counter = 0;

vertical_counter = 0;

end


assign r[3:0] = ((horizontal_counter >= 144) 

&& (horizontal_counter < 784) 

&& (vertical_counter >=39)

&& (vertical_counter < 519)) ? red : 4'b000; 

assign g[3:0] = ((horizontal_counter >= 144) 

&& (horizontal_counter < 784) 

&& (vertical_counter >=39)

&& (vertical_counter < 519)) ? green : 4'b000; 

assign b[3:0] = ((horizontal_counter >= 144) 

&& (horizontal_counter < 784) 

&& (vertical_counter >=39)

&& (vertical_counter < 519)) ? blue : 4'b000; 


assign red =   ((horizontal_counter >= 144)&&(horizontal_counter < 344) ) ? 4'b1111 : 4'b0000;

assign green = ((horizontal_counter >= 344)&&(horizontal_counter < 544) ) ? 4'b1111 : 4'b0000;

assign blue =  ((horizontal_counter >= 544)&&(horizontal_counter < 784) ) ? 4'b1111 : 4'b0000;


always @(posedge clk)

begin


if (clk25 == 0)

begin

   clk25 <= 1;

end   

else

begin

clk25 <= 0;

   end

end



always @(posedge clk25)

begin

if ((horizontal_counter > 0) && (horizontal_counter < 97))// -- 96+1

begin

hsync <= 0;

end

else

begin

hsync <= 1;

end 

if ((vertical_counter > 0 ) && (vertical_counter < 3 )) //-- 2+1

begin

vsync <= 0;

end

else

begin

vsync <= 1;

end

horizontal_counter <= horizontal_counter+1;

    

if (horizontal_counter == 800) 

begin

vertical_counter <= vertical_counter+1;

horizontal_counter <= 0;

end

    

if (vertical_counter == 521)

begin

vertical_counter <= 0;

end

end



endmodule  


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

timequest time analyzer?  (0) 2018.06.28
altera quartus2 simulation 도움말  (0) 2018.06.28
modelsim 길이 측정하기  (0) 2018.06.27
de0-nano LVDS  (0) 2018.06.26
dual purpose pins  (0) 2018.06.20
Posted by 구차니
embeded/FPGA - ALTERA2018. 6. 27. 11:01

modelsim에서 파형을 어떻게 계측하나 해서 찾아 보니..

3.4.4 Measuring time

In wave viewer, select from top menus Add -> Cursor. Now you'll see 2 vertical lines (cursors). You can easily drag them and see the time interval between on the bottom. This is very handy when have to measure the execution time (or signal frequency). Just divide the time with the duration of a clock period to derive the number of clock cycles. 

[링크 : http://www.tkt.cs.tut.fi/tools/public/tutorials/mentor/modelsim/getting_started/gsms.html]


음.. 메뉴를 보니 A가 단축키네..


너무 멀지 않은 edge에 커서를 클릭하면 대충 달라 붙는데 A 누르면 저렇게 하나씩 생겨나고

아래에 cursor 가 생겨나는데 적절히 이용하면 될 듯?


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

altera quartus2 simulation 도움말  (0) 2018.06.28
modelsim 시뮬레이션과 initial  (0) 2018.06.27
de0-nano LVDS  (0) 2018.06.26
dual purpose pins  (0) 2018.06.20
modelsim define clock  (0) 2018.06.19
Posted by 구차니
embeded/FPGA - ALTERA2018. 6. 26. 09:50

DE0-nano의 메인칩은 EP4CE22F17C6N 인데

아래분류를 따르면 FBGA 256pin이다.

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


그리고 디퍼런셜 채널은 20개

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


MCU들 처럼 핀의 alternative function 설정해주면 끝나는게 아니라..

ALTERA Megafunction을 통해 구현을 해주어야 하는건가?

[링크 : https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/an/an479.pdf]

[링크 : http://blog.daum.net/trts1004/12109410]

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

modelsim 시뮬레이션과 initial  (0) 2018.06.27
modelsim 길이 측정하기  (0) 2018.06.27
dual purpose pins  (0) 2018.06.20
modelsim define clock  (0) 2018.06.19
modelsim과 timescale 그리고 50Mhz  (0) 2018.06.18
Posted by 구차니
embeded/FPGA - ALTERA2018. 6. 20. 11:23

흐음. 이거 설정 안해서 EPCS 부팅이 안되던 건가..

그냥 flash programmer를 통해서 해본적이 없어서 모르겠네..


아무튼 기본적 de0-nano 프로젝트 에서 dual-purpose pins에 할당된 내용이다.


사용가능한 옵션으로는 여러가지가 있지만 대개 "Use as regular I/O"로 설정하는 듯 하다.

[링크 : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0430a/BABIAIHE.html]


On the Dual-purpose pins page (Assignments > Devices > Device and Pin Options), ensure that the following pins are assigned to the respective values:

— Data[0] = Use as regular I/O

— Data[1] = Use as regular I/O

— DCLK = Use as regular I/O

— FLASH_nCE/nCS0 = Use as regular I/O

[링크 : https://www.altera.com/en_US/pdfs/literature/ug/ug_embedded_ip.pdf] 167page

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

modelsim 길이 측정하기  (0) 2018.06.27
de0-nano LVDS  (0) 2018.06.26
modelsim define clock  (0) 2018.06.19
modelsim과 timescale 그리고 50Mhz  (0) 2018.06.18
modelsim nativelink  (0) 2018.06.18
Posted by 구차니
embeded/FPGA - ALTERA2018. 6. 19. 15:55

조금 만져본바로는

define clock이

apply wave를 통해 생성하는 것 보다 가벼운 느낌이다.


얘도 timescale에 따라가지는지는 확인해봐야 겠지만

`timescale 1ns/1ns 

설정하고 Period를 20으로 잡아주니 50MHz의 클럭이 생성된다(클럭 주기 20ns)

[링크 : http://www.pldworld.com/_hdl/2/_ref/se_html/manual_html/c_gui82.html]

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

de0-nano LVDS  (0) 2018.06.26
dual purpose pins  (0) 2018.06.20
modelsim과 timescale 그리고 50Mhz  (0) 2018.06.18
modelsim nativelink  (0) 2018.06.18
modelsim 클럭연결하기  (0) 2018.06.15
Posted by 구차니
embeded/FPGA - ALTERA2018. 6. 18. 15:06

modelsim에서 시뮬레이션 할 때

timescale의 값에 설정된 단위대로 돌게 되는데 일반적으로 1ns/10ps를 자주 쓴다.

앞에는 # 뒤에 오는 숫자의 단위 시간이고 

만약 timescale 10ns로 한다면 #1은 1ns대신 10ns로 설정되게 된다.


`timescale 1ns/100ps


module Counter_tb;


reg        clk;

reg        rst_n;

wire [7:0] cnt;

// 20 ns 이다..

parameter PERIOD = 20; 


Counter counter (

  .CLK(clk),

  .RST_N(rst_n),

  .CNT(cnt)

);


initial begin

  #0  clk   = 1'b0;

      rst_n = 1'b0;

  #10 rst_n = 1'b1;

end


// 50MHz 코멘트를 잘달자

always #(PERIOD/2) clk = ~clk;


endmodule 

[링크 : https://blog.naver.com/bohkyou/100093456018]


50MHz는 20ns 주기이고 high / low duty를 고려하면 50% 일 경우

10ns 의 high, 10ns의 low를 유지하면 된다.

그렇기에 timescale 1ns/10ps의 경우

#10 clk = 1;

#10 clk = 0;

으로 반복해서 수행하면 충분해야 할텐데..

의미로 간격 바꾸고 modelsim에서 돌리면 내가 의도한 것과 다르게 나오는 느낌..


조금더 공부를 해봐야 알 듯 하다 ㅠㅠ

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

dual purpose pins  (0) 2018.06.20
modelsim define clock  (0) 2018.06.19
modelsim nativelink  (0) 2018.06.18
modelsim 클럭연결하기  (0) 2018.06.15
intel FPGA를 이용한 Processor Logic 설계입문 관련 링크  (0) 2018.06.15
Posted by 구차니
embeded/FPGA - ALTERA2018. 6. 18. 10:30

카페 보다 보니 저걸 설정해서 하면 quartus 내에서 더 편하게 한다는데

기본 설정은 none으로 되어있다고 설정을 해야 한다고 한다.

[링크 : https://www.altera.com/.../modelsim/exm-ncsim-native-link.html]

[링크 : https://www.youtube.com/watch?v=PmVVXQchv2c]



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

modelsim define clock  (0) 2018.06.19
modelsim과 timescale 그리고 50Mhz  (0) 2018.06.18
modelsim 클럭연결하기  (0) 2018.06.15
intel FPGA를 이용한 Processor Logic 설계입문 관련 링크  (0) 2018.06.15
quartus 2 qar file  (0) 2018.06.11
Posted by 구차니
embeded/FPGA - ALTERA2018. 6. 15. 16:53

이런 저런 방법이 있는데 어떻게 쓰는건지 감이 1도 안오네..

[링크 : http://www.newtc.co.kr/download/FB-CY6/NTC_FPGA_강좌_02_로직_시뮬레이터_사용법.pdf]


waveform 어쩌구 통해서 시뮬레이션에 쓸 문장을 생성하는 듯?

[링크 : https://youtu.be/uSGsQjXWnXk?t=420]


waveform editor

[링크 : https://www.altera.co.jp/ja_JP/pdfs/literature/hb/qts/qts_qii53017.pdf]

어쩌다 먼가 된거 같긴한데 안된건가? ㅠㅠ


[링크 : http://www.ednc.com/wp/wp-content/uploads/2015/06/modelsim_questa_10.4_tutorial.pdf]


How do I generate clock in Verilog ?

There are many ways to generate clock in Verilog; you could use one of the following methods:


Method #1

 1 initial begin

 2  clk = 0;

 3 end

 4    

 5 always begin

 6    #5  clk = ~clk;

 7 

 8 end

You could download file clock_always.v here

 

Method #2

 1 initial begin

 2   clk = 0;

 3   forever begin

 4      #5  clk = ~clk;

 5   end

 6 end

You could download file clock_forever.v here


Method #3

 1 initial begin

 2   clk = 0;

 3 end

 4 

 5 always begin

 6    #5  clk = 0;

 7    #5  clk = 1;

 8 end 

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


+

2018.06.18

하다 보니.. 클럭 연결을 할게 아니라

# 명령중 반복을 통해서 특정 시간대에 클럭처럼 신호를 발생시키도록 해야

시뮬레이션에서 정상적으로 계산이 가능 한 듯?


음.. #5 하면.. 100Mhz로 작동하는건가?



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

modelsim과 timescale 그리고 50Mhz  (0) 2018.06.18
modelsim nativelink  (0) 2018.06.18
intel FPGA를 이용한 Processor Logic 설계입문 관련 링크  (0) 2018.06.15
quartus 2 qar file  (0) 2018.06.11
HDMI de0-nano  (0) 2018.06.05
Posted by 구차니