文档库 最新最全的文档下载
当前位置:文档库 › FPGA警告大全

FPGA警告大全

FPGA警告大全
FPGA警告大全

一个高人写的Quartus警告分析大全

Q u a r t u s警告分析! 1.Found clock-sensitive change during active clock edge at time

原因:vector source file中时钟敏感信号(如:数据,允许端,清零,同步加

载等)在时钟的边缘同时变化。而时钟敏感信号是不能在时钟边沿变化的。其后果为导致结果不正确。

措施:编辑vector source file

2.Verilog HDL assignment warning at : truncated

with size to match size of target (

原因:在HDL设计中对目标的位数进行了设定,如:reg[4:0] a;而默认为32位,

将位数裁定到合适的大小

措施:如果结果正确,无须加以修正,如果不想看到这个警告,可以改变设定的位数

3.All reachable assignments to data_out(10) assign '0', register

removed by optimization

原因:经过综合器优化后,输出端口已经不起作用了

4.Following 9 pins have nothing, GND, or VCC driving datain port --

changes to this connectivity may change fitting results

原因:第9脚,空或接地或接上了电源

措施:有时候定义了输出端口,但输出端直接赋…0?,便会被接地,赋…1?接电源。如果你的设计中这些端口就是这样用的,那便可以不理会这些warning

5.Found pins ing as undefined clocks and/or memory enables

原因:是你作为时钟的PIN没有约束信息。可以对相应的PIN做一下设定就行了。主要是指你的某些管脚在电路当中起到了时钟管脚的作用,比如flip-flop的clk 管脚,而此管脚没有时钟约束,因此QuartusII把“clk”作为未定义的时钟。

措施:如果clk不是时钟,可以加“not clock”的约束;如果是,可以在clock setting当中加入;在某些对时钟要求不很高的情况下,可以忽略此警告或在这

里修改:Assignments>Timing analysis settings...>Individual clocks...>...

6.Timing characteristics of device EPM570T144C5 are preliminary

原因:因为MAXII 是比較新的元件在QuartusII 中的時序并不是正式版的,要

等Service Pack

措施:只影响Quartus 的Waveform

7.Warning: Clock latency analysis for PLL offsets is supported for the

current device family, but is not enabled

措施:将setting中的timing Requirements&Option-->More Timing

Setting-->setting-->Enable Clock Latency中的on改成OFF

8.Found clock high time violation at 14.8 ns on register

"|counter|lpm_counter:count1_rtl_0|dffs[11]"

原因:违反了steup/hold时间,应该是后仿真,看看波形设置是否和时钟沿符

合steup/hold时间

措施:在中间加个寄存器可能可以解决问题

9.warning: circuit may not operate.detected 46 non-operational

paths clocked by clock clk44 with clock skew larger than data delay

原因:时钟抖动大于数据延时,当时钟很快,而if等类的层次过多就会出现这种问题,但这个问题多是在器件的最高频率中才会出现

措施:setting-->timing Requirements&Options-->Default required

fmax 改小一些,如改到50MHZ

10.Design contains input pin(s) that do not drive logic

原因:输入引脚没有驱动逻辑(驱动其他引脚),所有的输入引脚需要有输入逻辑措施:如果这种情况是故意的,无须理会,如果非故意,输入逻辑驱动.

11.Warning:Found clock high time violation at 8.9ns on node

'TEST3.CLK'

原因:FF中输入的PLS的保持时间过短

措施:在FF中设置较高的时钟频率

12.Warning: Found 10 node(s) in clock paths which may be acting as

ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in

clock skew

原因:如果你用的CPLD 只有一组全局时钟时,用全局时钟分频产生的另一个时

钟在布线中当作信号处理,不能保证低的时钟歪斜(SKEW)。会造成在这个时钟上工作的时序电路不可靠,甚至每次布线产生的问题都不一样。

措施:如果用有两组以上全局时钟的FPGA 芯片,可以把第二个全局时钟作为另一个时钟用,可以解决这个问题。

13.Critical Warning: Timing requirements were not met. See Report

window for details.

原因:时序要求未满足,

措施:双击Compilation Report-->Time Analyzer-->红色部分(如clock

setup:'clk'等)-->左键单击list path,查看fmax的SLACK REPORT再根据

提示解决,有可能是程序的算法问题

14.Can't achieve minimum setup and hold requirement along

path(s). See Report window for details.

原因:时序分析发现一定数量的路径违背了最小的建立和保持时间,与时钟歪斜有关,一般是由于多时钟引起的

措施:利用Compilation Report-->Time Analyzer-->红色部分(如clock

hold:'clk'等),在slack中观察是hold time为负值还是setup time 为负值,

然后在:Assignment-->Assignment Editor-->To中增加时钟名(from

node finder),Assignment Name中增加

和多时钟有关的Multicycle 和Multicycle Hold选项,如hold time为负,可

使Multicycle hold的值>multicycle,如设为2和1。

15: Can't analyze file -- file E://quartusii/*/*.v is missing

原因:试图编译一个不存在的文件,该文件可能被改名或者删除了

措施:不管他,没什么影响

16.Warning: Can't find signal in vector source file for input pin

|whole|clk10m

原因:因为你的波形仿真文件(vector source file )中并没有把所有的输入

信号(input pin)加进去,对于每一个输入都需要有激励源的

17.Error: Can't name logic scfifo0 of instance "inst" --

has same name as current design file

原因:模块的名字和project的名字重名了

措施:把两个名字之一改一下,一般改模块的名字

18.Warning: Using design file lpm_fifo0.v, which is not specified as a

design file for the current project, but contains definitions for 1 design

units and 1 entities in project Info: Found entity 1: lpm_fifo0

原因:模块不是在本项目生成的,而是直接copy了别的项目的原理图和源程序而生成的,而不是用QUARTUS将文件添加进本项目

措施:无须理会,不影响使用

19.Timing characteristics of device are preliminary

原因:目前版本的QuartusII只对该器件提供初步的时序特征分析

措施:如果坚持用目前的器件,无须理会该警告。关于进一步的时序特征分析会在后续版本的Quartus得到完善。

20.Timing Analysis does not support the analysis of latches as

synchronous elements for the currently selected device family

原因:用analyze_latches_as_synchronous_elements setting可以让

Quaruts II来分析同步锁存,但目前的器件不支持这个特性

措施:无须理会。时序分析可能将锁存器分析成回路。但并不一定分析正确。其后果可能会导致显示提醒用户:改变设计来消除锁存器

21.Warning:Found xx output pins without output pin load capacitance

assignment(网友:gucheng82提供)

原因:没有给输出管教指定负载电容

措施:该功能用于估算TCO和功耗,可以不理会,也可以在Assignment Editor 中为相应的输出管脚指定负载电容,以消除警告

22.Warning: Found 6 node(s) in clock paths which may be acting as

ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in

clock skew

原因:使用了行波时钟或门控时钟,把触发器的输出当时钟用就会报行波时钟,将组合逻辑的输出当时钟用就会报门控时钟

措施:不要把触发器的输出当时钟,不要将组合逻辑的输出当时钟,如果本身如此设计,则无须理会该警告

23.Warning (10268): Verilog HDL information at lcd7106.v(63):

Always Construct contains both blocking and non-blocking

assignments

原因:一个always模块中同时有阻塞和非阻塞的赋值

Q u a r t u s常见错误分析 1 Warning: VHDL Process Statement warning at random.vhd(18): signal reset is in statement, but is not in sensitivity list

----没把singal放到process()中

2 Warning: Found pins ing as undefined clocks and/or memory enables

Info: Assuming node CLK is an undefined clock

-=-----可能是说设计中产生的触发器没有使能端

3 Error: VHDL Interface Declaration error in clk_gen.vhd(29): interface object "clk_scan" of mode out cannot be read. Change object mode to buffer or inout.

------信号类型设置不对,out当作buffer来定义

4 Error: Node instance "clk_gen1" instantiates undefined entity "clk_gen"

-------引用的例化元件未定义实体--entity "clk_gen"

5 Warning: Found 2 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew

Info: Detected ripple clock "clk_gen:clk_gen1|clk_incr" as buffer

Info: Detected ripple clock "clk_gen:clk_gen1|clk_scan" as buffer

6 Warning: VHDL Process Statement warning at ledmux.vhd(15): signal or variable "dataout" may not be assigned a new in every possible path through the Process Statement. Signal or variable "dataout" holds its previous in every path with no new assignment, which may create a combinational loop in the current design.

7 Warning: VHDL Process Statement warning at divider_10.vhd(17): signal "cnt" is read inside the Process Statement but isn't in the Process Statement's sensivitity list

-----缺少敏感信号

8 Warning: No clock transition on "counter_bcd7:counter_counter_clk|q_sig[3]" register

9 Warning: Reduced register "counter_bcd7:counter_counter_clk|q_sig[3]" with stuck clock port to stuck GND

10 Warning: Circuit may not operate. Detected 1 non-operational path(s) clocked by clock "class[1]" with clock skew larger than data delay. See Compilation Report for details.

11 Warning: Circuit may not operate. Detected 1 non-operational path(s) clocked by clock "sign" with clock skew larger than data delay. See Compilation Report for details.

12 Error: VHDL error at counter_clk.vhd(90): actual port "class" of mode "in" cannot be associated with formal port "class" of mode "out"

------两者不能连接起来

13 Warning: Ignored node in vector source file. Can't find corresponding node name "class_sig[2]" in design.

------没有编写testbench文件,或者没有编辑输入变量的值testbench里是元件申明和映射

14 Error: VHDL Binding Indication error at freqdetect_top.vhd(19): port "class" in design entity does not have std_logic_vector type that is specified for the same generic in the associated component

---在相关的元件里没有当前文件所定义的类型

15 Error: VHDL error at tongbu.vhd(16): can't infer register for signal "gate" because signal does not hold its outside clock edge

16 Warning: Found clock high time violation at 1000.0 ns on register "|fcounter|lpm_counter:temp_rtl_0|dffs[4]"

17 Warning: Compiler packed, optimized or synthesized away node "temp[19]". Ignored vector source file node.

---"temp[19]"被优化掉了

18 Warning: Reduced register "gate~reg0" with stuck data_in port to stuck GND

19 Warning: Design contains 2 input pin(s) that do not drive logic

Warning: No output dependent on input pin "clk"

Warning: No output dependent on input pin "sign"

------输出信号与输入信号无关,

20 Warning: Found clock high time violation at 16625.0 ns on register "|impulcomp|gate1"

21 Error: VHDL error at impulcomp.vhd(19): can't implement clock enable condition specified using binary operator "or"

22 Error: VHDL Association List error at period_counter.vhd(38): actual parameter assigned to formal parameter "alarm", but formal parameter is not declared

-------连接表错误,形参"alarm"赋值给实参,形参没定义,可能是形参与实参的位置颠倒了,规定形参在实参之前。

23 Error: Ignored construct behavier at period_counter.vhd(15) because of previous errors

--------因为前一个错误而导致的错误

24 Error: VHDL error at period_counter.vhd(38): type of identifier "alarm" does not agree with its usage as std_logic type

--------"alarm"的定义类型与使用的类型不一致

25 Error: VHDL error at shift_reg.vhd(24): can't synthesize logic for statement with conditions that test for the edges of multiple clocks

-------同一进程中含有两个或多个if(edge)条件,(一个进程中之能有一个时钟沿)

26 Error: Can't resolve multiple constant drivers for net "datain_reg[22]" at shift_reg.vhd(19)

27 can't infer register for signal "num[0]" because signal does not hold its outside clock edge

28Error: Can't elaborate top-level user hierarchy

29 Error: Can't resolve multiple constant drivers for net "cs_in" at led_key.vhd(32) ----------有两个以上赋值语句,不能确定“cs_in”的值,

30 Warning: Ignored node in vector source file. Can't find corresponding node name "over" in design.

---------------在源文件中找不到对应的节点“over”。

31 Error: Can't access JTAG chain

无法找到下载链

32 Info: Assuming node "clk" is an undefined clock

(原創) 如何解決warning:『PLL output port feeds output pin via non-dedicated routing -- jitter performance depends on switching rate of other design elements. Use PLL dedicated clock outputs to ensure jitter performance』? (SOC) (Quartus II) (DE2-70) Abstract

無論是自己開發的project,或者是DE2-70 CD上的範例,只要Quartus II編譯後,幾乎大家都會遇到這個warning,到底是什麼意思呢?該如何解決這個warning呢?

Introduction

使用環境:Quartus II 8.1+ DE2-70 (Cyclone II EP2C70F896C6N)

小美與阿帥在(原創) 如何使用Pipeline Bridge增進Nios II系統的Fmax? (SOC) (Quartus II) (Nios II) (SOPC Builder) (DE2-70)成功解掉1個critical warning後,也開始對Quartus II其他warning感興趣,基本上大部分的warning的意義都很明確,也都能解掉,但對於以下這個warning,阿帥卡了很久還是解不掉:

查了一下Quartus II 8.1的Help,這是Altera的官方回答

並不是英文看不懂,只是看來看去,還是不知道該怎麼解決,最後小美與阿帥打算去請教無雙學長。

『小美與阿帥不錯喔,已經會開始注意Quartus II的warning了!!』

『哈哈哈,深入研究才發現,其實Quartus II warning很多都是蠻貼心的警告,就像寫Visual C++與gcc時,都會盡量讓warning不要出現,所以現在也希望盡量能解掉Quartus II的warning』阿帥很自豪的回答。

『這樣的習慣不錯,這樣會讓你更了解Quartus II在做什麼。』不過無雙學長話鋒一轉『你問的這個問題,其實也困擾我很久,因為找不到解決方法,又暫時不影響結果,就先擱在一旁不管了,今天你又問起,我又仔細的研究了一番。』

『在Altera Forum有人討論過這個問題https://www.wendangku.net/doc/751253060.html,/forum/showthread.php?t=1104,Ben與Brad講解的很清楚,你們兩個待會可以仔細閱讀他們的解釋,大至上的意思是說:由pll產生的clk,要ouput到專屬提供pll ouput的port,若output到非專屬pll output 的port,Quartus II就會產生這個warning。』

『這樣好抽像喔,學長可以講的更清楚些嗎?』小美有聽沒有懂,還是滿臉疑惑。

『就用你們寫的code來講解好了...』

DE2_70.v / Verilog

1/*

2(C) OOMusou 2008 https://www.wendangku.net/doc/751253060.html,

3

4Filename : DE2_70.v

5Compiler : Quartus II 8.1

6Description : Demo how to use TRDB-D5M with LTM on DE2-70 with Nios II 7Release : 12/18/2008 1.0

8*/

9

10 `default_nettype none

11

12module DE2_70 (

13//////////////////////// Clock Input ////////////////////////

14input iCLK_28, // 28.63636 MHz

15input iCLK_50, // 50 MHz

16input iCLK_50_2, // 50 MHz

17input iCLK_50_3, // 50 MHz

18input iCLK_50_4, // 50 MHz

19input iEXT_CLOCK, // External Clock

20//////////////////////// Push Button ////////////////////////

21input [3:0] iKEY, // Pushbutton[3:0]

22//////////////////////// DPDT Switch ////////////////////////

23input [17:0] iSW, // Toggle Switch[17:0]

24//////////////////////// 7-SEG Dispaly ////////////////////////

25output [6:0] oHEX0_D, // Seven Segment Digit 0

26output [6:0] oHEX1_D, // Seven Segment Digit 1

27output [6:0] oHEX2_D, // Seven Segment Digit 2

28output [6:0] oHEX3_D, // Seven Segment Digit 3

29output [6:0] oHEX4_D, // Seven Segment Digit 4

30output [6:0] oHEX5_D, // Seven Segment Digit 5

31output [6:0] oHEX6_D, // Seven Segment Digit 6

32output [6:0] oHEX7_D, // Seven Segment Digit 7

33//////////////////////////// LED ////////////////////////////

34output [8:0] oLEDG, // LED Green[8:0]

35output [17:0] oLEDR, // LED Red[17:0]

36/////////////////////// SDRAM Interface ////////////////////////

37inout [31:0] DRAM_DQ, // SDRAM Data bus 32 Bits

38output [12:0] oDRAM0_A, // SDRAM0 Address bus 13 Bits

39output [12:0] oDRAM1_A, // SDRAM1 Address bus 13 Bits

40output oDRAM0_LDQM0, // SDRAM0 Low-byte Data Mask

41output oDRAM1_LDQM0, // SDRAM1 Low-byte Data Mask

42output oDRAM0_UDQM1, // SDRAM0 High-byte Data Mask

43output oDRAM1_UDQM1, // SDRAM1 High-byte Data Mask

44output oDRAM0_WE_N, // SDRAM0 Write Enable

45output oDRAM1_WE_N, // SDRAM1 Write Enable

46output oDRAM0_CAS_N, // SDRAM0 Column Address Strobe

47output oDRAM1_CAS_N, // SDRAM1 Column Address Strobe

48output oDRAM0_RAS_N, // SDRAM0 Row Address Strobe

49output oDRAM1_RAS_N, // SDRAM1 Row Address Strobe

50output oDRAM0_CS_N, // SDRAM0 Chip Select

51output oDRAM1_CS_N, // SDRAM1 Chip Select

52output [1:0] oDRAM0_BA, // SDRAM0 Bank Address

53output [1:0] oDRAM1_BA, // SDRAM1 Bank Address

54output oDRAM0_CLK, // SDRAM0 Clock

55output oDRAM1_CLK, // SDRAM1 Clock

56output oDRAM0_CKE, // SDRAM0 Clock Enable

57output oDRAM1_CKE, // SDRAM1 Clock Enable

58//////////////////////// Flash Interface ////////////////////////

59inout [14:0] FLASH_DQ, // FLASH Data bus 15 Bits (0 to 14)

60inout FLASH_DQ15_AM1, // FLASH Data bus Bit 15 or Address A-1

61output [21:0] oFLASH_A, // FLASH Address bus 26 Bits

62output oFLASH_WE_N, // FLASH Write Enable

63output oFLASH_RST_N, // FLASH Reset

64output oFLASH_WP_N, // FLASH Write Protect /Programming Acceleration 65input iFLASH_RY_N, // FLASH Ready/Busy output

66output oFLASH_BYTE_N, // FLASH Byte/Word Mode Configuration

67output oFLASH_OE_N, // FLASH Output Enable

68output oFLASH_CE_N, // FLASH Chip Enable

69//////////////////////// SRAM Interface ////////////////////////

70inout [31:0] SRAM_DQ, // SRAM Data Bus 32 Bits

71inout [3:0] SRAM_DPA, // SRAM Parity Data Bus

72output [18:0] oSRAM_A, // SRAM Address bus 21 Bits

73output oSRAM_ADSC_N, // SRAM Controller Address Status

74output oSRAM_ADSP_N, // SRAM Processor Address Status

75output oSRAM_ADV_N, // SRAM Burst Address Advance

76output [3:0] oSRAM_BE_N, // SRAM Byte Write Enable

77output oSRAM_CE1_N, // SRAM Chip Enable

78output oSRAM_CE2, // SRAM Chip Enable

79output oSRAM_CE3_N, // SRAM Chip Enable

80output oSRAM_CLK, // SRAM Clock

81output oSRAM_GW_N, // SRAM Global Write Enable

82output oSRAM_OE_N, // SRAM Output Enable

83output oSRAM_WE_N, // SRAM Write Enable

84//////////////////////// GPIO ////////////////////////////////

85inout [31:0] GPIO_0, // GPIO Connection 0 I/O

86input GPIO_CLKIN_N0, // GPIO Connection 0 Clock Input 0

87input GPIO_CLKIN_P0, // GPIO Connection 0 Clock Input 1

88inout GPIO_CLKOUT_N0, // GPIO Connection 0 Clock Output 0

89inout GPIO_CLKOUT_P0, // GPIO Connection 0 Clock Output 1

90inout [31:0] GPIO_1, // GPIO Connection 1 I/O

91input GPIO_CLKIN_N1, // GPIO Connection 1 Clock Input 0 92input GPIO_CLKIN_P1, // GPIO Connection 1 Clock Input 1 93inout GPIO_CLKOUT_N1, // GPIO Connection 1 Clock Output 0 94inout GPIO_CLKOUT_P1, // GPIO Connection 1 Clock Output 1 95//////////////////// SD Card Interface //////////////////////// 96inout SD_DAT, // SD Card Data

97inout SD_DAT3, // SD Card Data 3

98inout SD_CMD, // SD Card Command Signal

99output oSD_CLK // SD Card Clock

100 );

101

102// ltm

103wire [7:0] ltm_r; // ltm red data 8 bits

104wire [7:0] ltm_g; // ltm green data 8 bits

105wire [7:0] ltm_b; // ltm blue data 8 bits

106wire ltm_nclk; // ltm clcok

107wire ltm_hd; // ltm h.sync

108wire ltm_vd; // ltm v.sync

109wire ltm_den; // ltm data enable

110

111// ltm config

112wire ltm_sclk; // ltm I2S clk

113wire ltm_scen; // ltm I2s clk enable

114wire adc_ltm_sclk; // acd_ltm I2s clk enable

115wire ltm_grst; // ltm reset

116

117assign ltm_grst = iKEY[0]; // ltm rest

118assign adc_ltm_sclk = ltm_sclk; // ltm i2s clk enable

119assign GPIO_0[2] = adc_ltm_sclk; // acd_ltm i2sclk enable

120assign GPIO_0[3] = ltm_b[3]; // ltm blue data 8 bits

121assign GPIO_0[4] = ltm_b[2]; // ltm blue data 8 bits 122assign GPIO_0[5] = ltm_b[1]; // ltm blue data 8 bits 123assign GPIO_0[6] = ltm_b[0]; // ltm blue data 8 bits 124assign GPIO_0[7] =~ltm_nclk; // ltm clcok

125assign GPIO_0[8] = ltm_den; // ltm data enable

126assign GPIO_0[9] = ltm_hd; // ltm h.sync

127assign GPIO_0[10] = ltm_vd; // ltm v.sync

128assign GPIO_0[11] = ltm_b[4]; // ltm blue data 8 bits 129assign GPIO_0[12] = ltm_b[5]; // ltm blue data 8 bits 130assign GPIO_0[13] = ltm_b[6]; // ltm blue data 8 bits 131assign GPIO_CLKOUT_N0 = ltm_b[7]; // ltm blue data 8 bits 132assign GPIO_0[14] = ltm_g[0]; // ltm blue data 8 bits 133assign GPIO_CLKOUT_P0 = ltm_g[1]; // ltm blue data 8 bits 134assign GPIO_0[15] = ltm_g[2]; // ltm blue data 8 bits 135assign GPIO_0[16] = ltm_g[3]; // ltm blue data 8 bits 136assign GPIO_0[17] = ltm_g[4]; // ltm blue data 8 bits 137assign GPIO_0[18] = ltm_g[5]; // ltm blue data 8 bits 138assign GPIO_0[19] = ltm_g[6]; // ltm blue data 8 bits 139assign GPIO_0[20] = ltm_g[7]; // ltm blue data 8 bits 140assign GPIO_0[21] = ltm_r[0]; // ltm red data 8 bits 141assign GPIO_0[22] = ltm_r[1]; // ltm red data 8 bits 142assign GPIO_0[23] = ltm_r[2]; // ltm red data 8 bits 143assign GPIO_0[24] = ltm_r[3]; // ltm red data 8 bits 144assign GPIO_0[25] = ltm_r[4]; // ltm red data 8 bits 145assign GPIO_0[26] = ltm_r[5]; // ltm red data 8 bits 146assign GPIO_0[27] = ltm_r[6]; // ltm red data 8 bits 147assign GPIO_0[28] = ltm_r[7]; // ltm red data 8 bits 148assign GPIO_0[29] = ltm_grst; // ltm red data 8 bits 149assign GPIO_0[30] = ltm_scen; // ltm sclk enable

150

151// reset_delay

152wire dly_rst_0; // reset delay 0

153wire dly_rst_1; // reset delay 1

154wire dly_rst_2; // reset delay 2

155

156 Reset_Delay reset0 (

157 .iCLK(iCLK_50), // 50 MHz

158 .iRST(iKEY[0]), // Pushbutton[0]

159 .oRST_0(dly_rst_0), // reset delay 0

160 .oRST_1(dly_rst_1), // reset delay 1

161 .oRST_2(dly_rst_2) // reset delay 2

162 );

163

164// flash

165wire flash_16bit_ip_a0;

166

167assign oFLASH_BYTE_N = 1'b1; // flash byte/word mode configuration

168assign oFLASH_RST_N = 1'b1; // flash reset

169assign oFLASH_WP_N = 1'b1; // flash write protect /programming acceleration

170

171// ssram

172wire sram_clk; // sram clock

173wire [1:0] sram_dummy_addr; // used to ignore the a0/a1 pin from cypress ssram ip core 174wire sram_dummy_addr0; // used to ignore msb of sram address

175

176assign oSRAM_CLK = sram_clk; // sram clock

177assign oSRAM_A[18] = 1'bz; // ignore oSRAM_A[18]

178assign oSRAM_ADSP_N = 1'b1; // sram processor address status

179assign oSRAM_ADV_N = 1'b1; // sram burst address advance

180assign oSRAM_CE2 = ~oSRAM_CE1_N; // sram chip enable

181assign oSRAM_CE3_N = oSRAM_CE1_N; // sram chip enable

182assign oSRAM_GW_N = 1'b1; // sram global write enable

183

184// sdram (dual channel)

185// the sdram is shared with Hw and SW

186wire [12:0] dram_a; // sdram address

187wire [1:0] dram_ba; // sdram bank address

188wire dram_cas_n; // sdram column address strobe

189wire dram_cke; // sdram clock enable

190wire dram_cs_n; // sdram chip select

191wire [3:0] dram_dqm; // sdram data mask

192wire dram_ras_n; // sdram row address strobe

193wire dram_we_n; // sdram write enable

194

195// sdram0

196assign oDRAM0_CLK = sram_clk; // sdram0 clock

197assign oDRAM0_A = dram_a; // sdram0 address bus 13 bits

198assign oDRAM0_BA = dram_ba; // sdram0 bank address

199assign oDRAM0_CAS_N = dram_cas_n; // sdram0 column address strobe 200assign oDRAM0_CKE = dram_cke; // sdram0 clock enable

201assign oDRAM0_CS_N = dram_cs_n; // sdram0 chip select

202assign oDRAM0_LDQM0 = dram_dqm[0]; // sdram0 low-byte data mask

203assign oDRAM0_UDQM1 = dram_dqm[1]; // sdram0 high-byte data mask

204assign oDRAM0_RAS_N = dram_ras_n; // sdram0 row address strobe

205assign oDRAM0_WE_N = dram_we_n; // sdram0 write enable

206

207// sdram1

208assign oDRAM1_CLK = sram_clk; // sdram1 clock

209assign oDRAM1_A = dram_a; // sdram1 clock 210assign oDRAM1_BA = dram_ba; // sdram1 address bus 13 bits

211assign oDRAM1_CAS_N = dram_cas_n; // sdram1 bank address 212assign oDRAM1_CKE = dram_cke; // sdram1 column address strobe 213assign oDRAM1_CS_N = dram_cs_n; // sdram1 clock enable 214assign oDRAM1_LDQM0 = dram_dqm[2]; // sdram1 chip select 215assign oDRAM1_UDQM1 = dram_dqm[3]; // sdram1 low-byte data mask 216assign oDRAM1_RAS_N = dram_ras_n; // sdram1 high-byte data mask 217assign oDRAM1_WE_N = dram_we_n; // sdram1 row address strobe 218 // sdram1 write enable

219

220// LED

221assign oLEDG[8] = 1'b0; // no use of ledg[8]

222assign oLEDR[17:2] = 14'h0000; // no use of ledr[15:2]

223

224// NIOS II CPU

225wire cpu_clk; // cpu clk

226wire cpu_reset_n; // cpu reset

227

228assign cpu_reset_n = dly_rst_2; // cpu_reset

229

230 nios_ii nios0 (

231// 1) global signals:

232 .clk_50(iCLK_50), // 50MHz

233 .pll_c0_system(cpu_clk), // cpu clk

234 .pll_c1_memory(sram_clk), // sram clk

235 .reset_n(cpu_reset_n), // cpu reset

236 // the_sdram

237 .zs_addr_from_the_sdram(dram_a), // sdram address

238 .zs_ba_from_the_sdram(dram_ba), // sdram bank address

239 .zs_cas_n_from_the_sdram(dram_cas_n), // sdram column address strobe 240 .zs_cke_from_the_sdram(dram_cke), // sdram clock enable

241 .zs_cs_n_from_the_sdram(dram_cs_n), // sdram chip select

242 .zs_dq_to_and_from_the_sdram(DRAM_DQ), // sdram data bus 32 bits

243 .zs_dqm_from_the_sdram(dram_dqm), // sdram data mask

244 .zs_ras_n_from_the_sdram(dram_ras_n), // sdram row address strobe

245 .zs_we_n_from_the_sdram(dram_we_n), // sdram write enable

246 // flash

247 .address_to_the_cfi_flash({oFLASH_A[21:0],flash_16bit_ip_a0}), // flash address bus 26 bits

248 .data_to_and_from_the_cfi_flash({FLASH_DQ15_AM1,FLASH_DQ}), // flash data bus 15 bits (0 to 14) 249 .read_n_to_the_cfi_flash(oFLASH_OE_N), // flash output enable

250 .select_n_to_the_cfi_flash(oFLASH_CE_N), // flash chip enable

251 .write_n_to_the_cfi_flash(oFLASH_WE_N), // flash write enable

252 // the_tristate_bridge_1_avalon_slave (ssram)

253 .address_to_the_ssram({sram_dummy_addr0, oSRAM_A[17:0],sram_dummy_addr}), // sram address bus 21 bits 254 .adsc_n_to_the_ssram(oSRAM_ADSC_N), // sram controller address status

255 .bw_n_to_the_ssram(oSRAM_BE_N), // sram byte write enable 256 .bwe_n_to_the_ssram(oSRAM_WE_N), // sram write enable

257 .chipenable1_n_to_the_ssram(oSRAM_CE1_N), // sram chip enable

258 .data_to_and_from_the_ssram((SRAM_DQ)), // sram data bus 32 bits 259 .outputenable_n_to_the_ssram(oSRAM_OE_N), // sram output enable

260 // the_ltm0

261 .coe_ltm_export_iCLK_50_to_the_ltm(iCLK_50_2), // 50MHz

262 .coe_ltm_export_iRST0_to_the_ltm(dly_rst_0), // reset delay 0

263 .coe_ltm_export_iRST2_to_the_ltm(dly_rst_2), // reset delay 2

264 .coe_ltm_export_oLTM_CLK_from_the_ltm(ltm_nclk), // ltm clcok

265 .coe_ltm_export_oR_from_the_ltm(ltm_r), // ltm red data 8 bits

266 .coe_ltm_export_oG_from_the_ltm(ltm_g), // ltm green data 8 bits

267 .coe_ltm_export_oB_from_the_ltm(ltm_b), // ltm blue data 8 bits

268 .coe_ltm_export_oHD_from_the_ltm(ltm_hd), // ltm h.sync

269 .coe_ltm_export_oVD_from_the_ltm(ltm_vd), // ltm v.sync

270 .coe_ltm_export_oDEN_from_the_ltm(ltm_den), // ltm data enable

271 .coe_ltm_export_oSCLK_from_the_ltm(ltm_sclk), // ltm sclk

272 .coe_ltm_export_ioSDAT_to_and_from_the_ltm(GPIO_0[31]), // ltm I2S data

273 .coe_ltm_export_oSCEN_from_the_ltm(ltm_scen), // ltm I2S clk enable

274 .coe_ltm_export_oFIFO_EMPTY_from_the_ltm(oLEDR[0]), // for debug use only (ltm fifo empty) 275 .coe_ltm_export_oFIFO_FULL_from_the_ltm(oLEDR[1]), // for debug use only (ltm fifo full) 276 // SD

277 .out_port_from_the_sd_clk(oSD_CLK), // SD Card Clock

278 .bidir_port_to_and_from_the_sd_cmd(SD_CMD), // SD Card Command Signal

279 .bidir_port_to_and_from_the_sd_dat(SD_DAT), // SD Card Data

280 .bidir_port_to_and_from_the_sd_dat3(SD_DAT3) // SD Card Data 3

281 );

282

283endmodule

『234行的sram_clk,是由pll所產生的。』

nios_ii nios0 (

// 1) global signals:

.clk_50(iCLK_50), // 50MHz

.pll_c0_system(cpu_clk), // cpu clk

.pll_c1_memory(sram_clk), // sram clk

『而Quartus II的warning,主要是來自於以下這幾行:』

176行

assign oSRAM_CLK = sram_clk; // sram clock

196行

assign oDRAM0_CLK = sram_clk; // sdram0 clock

208行

assign oDRAM1_CLK = sram_clk; // sdram1 clock

124行

assign GPIO_0[7] =~ltm_nclk; // ltm clcok

『因為你將sram_clk這個由pll產生的clk output到oSRAM_CLK、oDRAM0_CLK、oDRAM1_CLK、GPIO_0[7]這些非pll專屬的output port,所以Quartus II才有以上這些warning?』

『DE2-70有這些pll專屬的output port嗎?』阿帥還是很懷疑。

『有,你看一下DE2-70 User Manual p.43,GPIO就有提供pll專屬的input與output port,Quartus II就是希望你pll產生的clk,能output 到這種專屬的port以避免jitter。』

『可是在DE2-70上,SDRAM與SRAM都沒有專屬pll output port的設計怎麼辦?』小美仔細的查過DE2-70 User Manual,發現只有GPIO 提供pll output port。

『對,這就牽涉到開發版的設計了,或許當初認為GPIO主要是外接自己的周邊,所以使用到pll的機會很大,因此設計了專屬的pll output port,不過在https://www.wendangku.net/doc/751253060.html,/forum/showthread.php?t=1104中,Brad最後也做了結論,若你的clk port能接受pll的jitter 的話,就可忽略這個warning。』

『那看來這個warning是解不掉了...』阿帥覺得有點失望...。

『雖然如此,也讓我們更了解Quartus II warning的意義,所以未嘗不是一件好事,畢竟只是warning,只要我們知道自己在幹什麼,能確保整個設計正常,就可放心的忽略這個warning。』無雙學長還是對小美與阿帥的研究精神加以肯定。

Conclusion

注意Quartus II warning是一個很好的習慣,就算可能不能完全解掉,但最少要知道這個warning在幹什麼。

安全警示标志大全

安全标识大全 通用安全标志 安全标志 禁止吸烟禁止烟火禁止带火种禁止用水灭火禁止放易燃物 禁止启动禁止合闸禁止转动禁止触摸禁止跨越 禁止攀登禁止跳下禁止入内禁止停留禁止通行

禁止靠近禁止乘人禁止堆放禁止抛物禁止带手套 禁止穿化纤服装禁止穿带钉鞋禁止饮用注意安全当心火灾 当心爆炸当心腐蚀当心中毒当心感染当心触电 当心电缆当心机械伤人当心伤手当心轧脚当心吊物

当心坠落当心落物当心坑洞当心烫伤当心弧光 当心塌方当心冒顶当心瓦斯当心电离辐射当心裂变物质 当心激光当心微波当心车辆当心火车当心滑跌 当心绊倒必须戴防护眼镜必须戴防毒面具必须戴防尘口罩必须戴护耳器

必须戴安全帽 必须戴防护帽必须戴防护手套必须穿防护鞋必须系安全带必须穿救生衣必须穿防护服必须加锁紧急出口a紧急出口b 可动火区避险处 交通安全标志 交通安全标志 警1 十字交叉路口标志警2 T形交叉路口标志警3 T形交叉路口标志警4 T形交叉路口标志警5 Y形交叉路口标志

警6 环形交叉路口标志警7 向左急弯路标志警8 向右急弯路标志警9 反向弯路标志警10 连续弯路标志 警11 上陡坡标志警12 下陡坡标志警13 两侧变窄标志警14 右侧变窄标志警15 左侧变窄标志 警16 窄桥标志警17 双向交通标志警18 注意行人标志警19 注意儿童标志警20 注意牲畜 警21 注意信号灯标志警22a 注意落石标志警22b 注意落石标志警23 注意横风标志警24 易滑标志 警25a 傍山险路标志警25b 傍山险路标志警26a 堤坝路标志警26b 堤坝路标志警27 村庄标志

警28 隧道标志警29 渡口标志警30 驼峰桥标志警31 路面不平标志警32 过水路面(或漫水 警33 有人看守铁路道口警34 无人看守铁路道口警35 叉形符号警36a 斜杠符号警36b 斜杠符号 警36c 斜杠符号警37 注意非机动车标志警38 事故易发路段标志警39 慢行标志警40a 左右绕行标志 警40b 左侧绕行标志警40c 右侧绕行标志警41 施工标志警42 注意危险标志禁1 禁止通行标志

交通警示标志大全

警告标志 (警告车辆、行人注意危险地点的标志) 十字交叉T形交叉T形交叉T形交叉Y形交叉 环形交叉向左急弯路向右急弯路反向弯路连续弯路 上陡坡下陡坡两侧变窄右侧变窄左侧变窄 窄桥双向交通注意行人注意儿童注意牲畜 注意信号灯注意落石注意落石注意横风易滑 傍山险路傍山险路堤坝路堤坝路村庄

隧道渡口驼峰桥路面不平过水路面 有人看守铁路道 口 无人看守铁路道口注意非机动车事故易发路段慢行 左右绕行左侧绕行右侧绕行施工注意危险 叉形符号(表示多股铁道与道路交叉) 禁令标志 (禁止或限制车辆、行人交通行为的标志) 禁止通行禁止驶入禁止机动车通行禁止载货汽车通 行禁止三轮机动车 通行

禁止大型客车通 行禁止小型客车通 行 禁止汽车拖、挂车 通行 禁止拖拉机通行禁止农用运输车 通行 禁止二轮摩托车 通行禁止某两种车通 行 禁止非机动车通 行 禁止畜力车通行禁止人力货运三 轮车通行 禁止人力客运三轮车通行禁止人力车通行禁止骑自行车下 坡 禁止骑自行车上 坡 禁止行人通行 禁止向左转弯禁止向右转弯禁止直行禁止向左向右转 弯禁止直行和向左 转弯 禁止直行和向右 转弯禁止掉头禁止超车解除禁止超车禁止车辆临时或 长时停放

禁止车辆长时停 放 禁止鸣喇叭限制宽度限制高度限制质量 限制轴重限制速度解除限制速度停车检查停车让行 减速让行会车让行 指示标志 (指示车辆、行人行进的标志) 直行向左转弯向右转弯直行和向左转弯直行和向右转弯 向左和向右转弯靠右侧道路行驶靠左侧道路行驶立交直行和左转 弯行驶 立交直行和右转 弯行驶 环岛行驶单行路(向左或向 右) 单行路(直行) 步行鸣喇叭

相关文档