一些FPGA小技巧

一、位宽不匹配

不带位宽进行减法:

assign  o_c[1:0] = (i_a[1:0] == i_b[1:0] - 1) ? 2'b01 : 2'b10;

布局后:

带位宽进行减法:

o_c[1:0] = (i_a[1:0] == i_b[1:0] - 1'b1) ? 2'b01 : 2'b10;

布局后:

规范要求

 

 二、lattice设计注意点

1)、DQS,DQ

每个DQ管脚处都有一个ODDR

ODDR不可以用在DQS处

2)、LATTICE中普通走线进PLL的方法:

strategy里面,点击place and route,右边的选项窗口里面选择command line option里面添加 -exp Warn_DDR_General_Routing_on_Clock=1

这个主要是时钟上primary之前走了一段routing,软件默认认为这样不算时钟

3)、二个经常使用的属性: 

Macro Search Path:调用IP所用到的ngo以及网表文件所在路径,如果这里不设置,需要拷贝相关文件到工程目录下(与*.ldf同级目录)

Memory Initial Value File Search Path: RAM,ROM等初始化文件所在路径索引,如果这里不设置,需要拷贝相关文件到工程目录下(与*.ldf同级目录)

4)、lattice时序约束注意点

DCS在时钟无输入时,易导致锁死现象

当时用到reveal时,需要将jtag时钟进行约束到2m,保持时间0.05ns,否则容易捕捉数据出错

全局clksecondary clk需要分区域约束

secondary clk约束频率时需要保持时间的要求0.05ns

70ea95ea属于同一片子,ipbit通用,但推荐出版本时,要以实际的型号生成bit文件

 5)、ECP3 PLL CLK in不推荐使用DCS的输出

 三、xilinx设计技巧

1)、ISE中压缩文件方法

方法:

A、右击"Generate Programming File",点击"Process Properties"。

B、在-g compress后面打勾,压缩一下,再生成mcs后占用的数据空间可能就够了。

原因:因为不压缩的bit文件中,有用的程序代码后面会有很多固定的填补,在生成mcs时,这些填补也是占用空间的,压缩后,这些无用字节可以理解为被一句话“后面全是零”代替了。所以生成flash文件就不会占用那么多空间了。

(2)、IO Constraint

Off-Chip Termination:显示每个I/O标准的默认端接。比如FP_VTT_50表示远端并联50Ω的VTT端类型;

The termination setting is used by Simultaneous Switching Noise (SSN) analysis (see appendix A in UG571) and for power estimation (see UG440).   

Pull type:括弱上拉PULLUP、弱下拉PULLDOWN和保持KEEPER和NONE四种,前两种让三态输出或双向端口在不被驱动时可以避免浮动,KEEPER可以让其保持当前的值。

(3)、XILINX 二选一时钟

参考:https://blog.csdn.net/dimples_Song/article/details/81216527?ivk_sa=1024320u

clk125 和 clk250 是 clkcore_buf 的两个输入时钟,这两个时钟经过BUFGCTRL(在Xilinx 7系列FPGA中,直接使用BUFGMUX会消耗一个BUFGCTRL资源)后有重复时钟路径,针对这两个时钟做如下约束:

create_generated_clock -name clk125_bufgctrl \

-divide_by 1 [get_pins bufgctrl_i/O] \

-source [get_ports bufgctrl_i/I0]

create_generated_clock -name clk250_bufgctrl \

-divide_by 1 [get_pins bufgctrl_i/O] \

-source [get_ports bufgctrl_i/I1] \

-add -master_clock clk250

set_clock_groups –physically_exclusive \

–group clk125_bufgctrl \

–group clk250_bufgctrl

在clkcore_buf 的输出端上创建两个重叠的衍生钟,并将其时钟关系约束为 -physically_exclusive 表示不可能同时

通过。按照我的理解,频率稍高的一路时钟需要约束为-master_clock

(4)、JTAG连上导致FPGA无法启动的问题

https://www.xilinx.com/support/answers/66954.html

5)、vivadomcs文件的产生方法tcl脚本

write_cfgmem -force -format MCS -size 64 -interface SPIx1    -loadbit "up 0x0 E:/*/fpga_top.bit" E:/*/fpga_top

其中

  1. -size 64为芯片大小
  2. E:/*/fpga_top.bit   bit文件所在位置
  3. E:/*/fpga_top       mcs文件产生的位置
  4. W25Q128FV fpga对应的flash

四、Altera使用技巧

五、时钟选择电路

 六、modelsim

1)、Vivado生成库文件

在vivado的TCL窗口输入“compile_simlib -simulator modelsim -directory {E:\library\vivado}”,生成vivado的库文件。

2)、Modelsim PE,SE,DE区别

ModelSim是一款流行的数字设计仿真工具,由Mentor Graphics(现在是Siemens公司的一部分)开发和维护。它提供了DE(Development Edition)、SE(Starter Edition)和PE(Power Edition)等几个版本,每个版本针对不同的用户需求和功能有所不同。

ModelSim DE(Development Edition):

DE版是ModelSim的完整版,提供了广泛的功能和工具。
它包含了VHDL和Verilog仿真器,允许用户进行大型项目的仿真和调试。
DE版还支持SystemVerilog和VHDL-AMS语言,并提供高级调试功能。
DE版通常被用于专业的数字设计工程师,用于复杂项目的仿真和验证。

 

ModelSim SE(Starter Edition):

SE版是ModelSim的入门级版本,相比DE版功能较为受限。
它提供了基本的VHDL和Verilog仿真器,适用于小型项目的仿真和调试。
SE版不支持SystemVerilog和VHDL-AMS语言,并且缺少一些高级调试功能。
SE版通常被用于学生或初学者,用于学习数字设计和进行简单项目的仿真。

 

ModelSim PE(Power Edition):

PE版是介于DE版和SE版之间的版本,功能较SE版更强大,但不如DE版全面。
它提供了一些高级功能,比如代码覆盖率分析和性能优化选项。
PE版支持VHDL和Verilog仿真器,以及一些SystemVerilog特性,但不支持VHDL-AMS。
PE版适用于中等大小的项目,提供了较SE版更多的功能和灵活性。
综上所述,ModelSim DE版适合专业的数字设计工程师处理复杂项目,ModelSim SE版适合学生或初学者学习和进行简单项目的仿真,而ModelSim PE版则提供了一些高级功能,适合中等规模的项目。选择合适的版本取决于需求和预算。

3)、modelsim参数解析

3)、Modelsim命令解析

(1) +incdir+:

如:vlog +incdir+YOUR_SOURCE_PATH  foo.v

  +incdir+YOUR_SOURCE_PATH 选项是指在verilog文件中出现`include "xxx.v"

时,包含文件的搜索路径。

缺省是搜索当前路径,然后是 YOUR_SOURCE_PATH 指定的路径。

(2) +define+:

+define+<macro_name>[=<macro_text>]

  允许用户在命令行中定义宏定义,等效于编译器指令:

`define <macro_name> <macro_text>

  用户可以指定多个宏定义,如下:

vlog +define+one=r1 +two=r2 +three=r3 test.v

  命令行的宏定义会覆盖在源文件中用`define定义的相同名字的宏定义

如:vsim -c -l vsim.log -do ./YourDo.do -L ./work work.foo

   开始仿真:

-c 选项让vsim工作在commandline模式;

-l 选项是输出log文件到vsim.log;

-do 选项是开始仿真后运行tcl脚本文件;

-L 选项是指定工作逻辑库;

work.foo是仿真的top level module。

4)、仿真脚本

xilinx:

vsim -L xilinxcorelib_ver -L unisims_ver -L unimacro_ver -L secureip -lib work -voptargs=\"+acc\" -t 1ps work.tb_top_nto1_pll glbl

lattice:

vsim -t ps -novopt +notimingchecks -L lattice_lib -L pcsd_work -L lattice_pmi -L lattice_ecp3 work.tb_fpga_src_top

七、FPGA器件资料

SERDES两种预加重的区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: FPGA设计技巧与案例开发是一个非常专业、复杂性高的领域,需要深入掌握相关的知识和技术,才能够设计出高效稳定的FPGA电路。针对这一问题,以下为您详细介绍FPGA设计技巧与案例开发的相关内容。 首先,FPGA设计需要充分考虑电路的可维护性、可扩展性等诸多因素。具体来说,需要从以下几个方面进行考虑:电路可读性、可测试性、可维护性等。例如,在设计FPGA电路时,应尽量避免出现大量的状态机和多层嵌套的IF语句等复杂的结构,这些可能会导致设计失控、难以调试。 其次,FPGA设计的重要原则是要重视模块化开发,尽可能将电路分解为多个模块,每个模块完成一个特定的功能,利用好设计软件对模块进行大规模的复用。当然,在模块化开发的过程中,还应当充分考虑模块之间的接口设计及功能划分等问题。 最后,对于FPGA设计,我们要充分运用现代化的设计方法和技术,例如采用系统级设计(SLD)、硬件描述语言(HDL)等来进行开发,尤其是对于复杂电路的设计工作,采用高层次综合(HLS)工具来进行设计是非常必要的。这样能够有效简化设计过程、提高设计效率和可靠性,降低设计风险。 总的来说,FPGA设计技巧与案例开发需要综合考虑多方面的问题和因素,通过体系化的设计方法和技术,将电路分解为多个小模块,并通过复用模块来达到快速、高效的设计目的。 ### 回答2: FPGA(现场可编程门阵列)是一种集成电路芯片,它可以根据需要重新编程。因此,FPGA是一种非常灵活的技术,可以在数字电路设计、嵌入式系统设计等领域中得到广泛应用。 在FPGA设计中,设计者需要掌握一些技巧,以便有效地使用FPGA。首先,设计者需要了解FPGA的结构和工作原理。其次,设计者需要选择合适的FPGA软件开发工具,并熟练掌握FPGA编程语言和CAD工具。 在FPGA案例开发中,设计者需要遵循以下步骤。首先,设计者需要充分了解系统要求和应用场景,并确定FPGA的使用目标。其次,设计者需要进行FPGA系统的架构设计,并选择适当的FPGA器件和外设。然后,设计者需要进行FPGA硬件电路设计,包括时序分析、时钟驱动、I/O电路等。最后,设计者需要进行FPGA软件开发,包括程序编写、仿真测试、调试验证等。 在实际FPGA开发中,设计者还需要注意以下几点。首先,设计者需要考虑系统的可靠性和稳定性,并进行严格的测试验证。其次,设计者需要优化FPGA的性能和功耗,并控制FPGA的热管理。最后,设计者需要关注FPGA系统的安全性和保密性。 总之,FPGA设计技巧和案例开发需要设计者具备丰富的专业知识和实践经验,同时需要注重系统性能和可靠性、安全性和保密性等方面的控制。通过不断学习和实践,设计者可以不断提高FPGA设计能力,为实现更广泛的应用场景做出贡献。 ### 回答3: FPGA(Field-Programmable Gate Array)是一种灵活的硬件开发平台,可以实现定制化的芯片设计,因此在很多场合都有广泛的应用。FPGA开发的关键是熟练掌握设计技巧,避免在设计过程中出现问题,从而更好地满足设计需求。以下是几个常用技巧: 1.使用适当的FPGA资源:在设计过程中,应根据设计需求选取适当的FPGA资源,如LUT、RAM、DSP、IO等,并合理地分配资源使用。这样可以保证设计的运行效率和系统性能。 2.时序约束的设置:时序约束是指为了确保信号的有效响应和数据的正确稳定指定的时间要求。在FPGA设计中,需要合理设置时序约束,保证信号的稳定性和系统的正常工作。 3.参照现有资料:在FPGA开发过程中,可以参照官方文档和各种技术资料,掌握FPGA的相关知识和设计方法,节省时间和减少错误。 4.设计验证:在设计完成后,需要进行全面的设计验证和测试,以验证设计的正确性和有效性。 案例开发FPGA开发的重要一环,以下是一些常见的案例开发: 1.视频处理:视频处理是FPGA的常见应用,包括图像采集、图像处理和合成等。可以使用FPGA在不同的视频采集和处理方面实现高效的数据流处理。 2.数字信号处理:FPGA也经常用于数字信号处理,包括滤波、卷积、FFT、解码、编码等。可以使用FPGA在实时数据处理、高速数据转换以及音频和视频信号处理方面达到优异的性能。 3.嵌入式系统:FPGA也可以用于实现嵌入式系统,包括嵌入式处理器、外设控制等。可以使用FPGA来实现定制的芯片设计,以适应不同的应用场景和需求。 总之,掌握FPGA的设计技巧和运用案例开发的方法,可以为设计者提供创新性的解决方案,以满足不同的应用需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值