赞
踩
“micro is redefined”
warning即可清除
来源:https://blog.csdn.net/qq_36248682/article/details/105595799
根据状态机的输出是否与输入条件相关来区分Moore状态机和Mealy状态机。
Moore状态机:输出仅仅与当前状态有关;
如下实例,如三段式写法来写的一个序列检测的状态机(【 FPGA 】序列检测器的Moore状态机实现),状态机最后的输出部分:
always @*
begin
if(current_state == s4) dout = 1;
else dout = 0;
end
由此可见,Moore状态机仅仅和当前状态有关。
也可以看状态转移图判断:
Mealy状态机:输出不仅取决于当前状态,还和输入有关;
同样,如下序列检测的例子:【 FPGA 】序列检测器的Mealy状态机实现
同样是三段式描述,状态机的输出部分为:
always @ *
begin
if(reset) dout = 1'b0;
else if( (current_state == s3)&&(din == 1'b1) ) dout = 1'b1;
else dout = 1'b0;
end
同样,也可以通过状态转移图判断:
可见,输出不仅和当前状态和输入都有关系。
最后,Moore状态机和Mealy状态机可以相互转换。上述两个状态转移图实际上实现的是同一个功能,就是检测序列1101.
从verilog语法上好像是有意义的(但作用不大),但实际电路上,第一个NS=3'bx 写与不写,与实际生成的电路不会有区别。VHDL中设计还比较普遍。
可能的好处:主要看仿真异常比较方便
基于Xilinx跨die FPGA的逻辑设计 | 电子创新网赛灵思社区
https://blog.csdn.net/linbian1168/article/details/105690217
多die芯片其实是SSI(Stacked Silicon Interconnect)芯片,其结构如下图所示。其实就是在一个封装里,把多个芯片,也就是我们说的SLR(Super Logic Region)用interposer“绑”在一起,SLR之间的连接用专用布线资源SLL(Super Long Line)。
从方案架构设计的角度看,FPGA的设计也就是数据流的设计,即数据流在不同模块之间的走动。
在具体实现中,对于跨die的信号处理,官方的文档(ug949)中提供了2种方式,一种是通过约束的方式使用LAGUNA寄存器,一种是通过自动流水打拍的方式
复位信号的处理。跨die逻辑中有一类时序收敛问题就是复位信号的问题。
1.跨die路径尽可能减少,跨die两边信号都必须为寄存器类型,最好使用多级寄存器,打拍寄存器约束到临近die的clock region;
2.时钟clock,Reset信号尽量不要跨die,跨die会增加时钟skew;
3.尽量保持数据流单向,边界附近画跨die Pblock;
4.跨die路径时钟频率最高550MHz;
5.时钟clock,reset不建议使用set max_fanout;
Vivado对异步fifo的XDC设置:
看vivado的IP xdc默认的设置:(为啥是##,不使用,还要再检查一下)
- #set wr_clock [get_clocks -of_objects [get_ports wr_clk]]
- #set rd_clock [get_clocks -of_objects [get_ports rd_clk]]
- #set wr_clk_period [get_property PERIOD $wr_clock]
- #set rd_clk_period [get_property PERIOD $rd_clock]
- #set skew_value [expr {(($wr_clk_period < $rd_clk_period) ? $wr_clk_period : $rd_clk_period)} ]
-
-
- # Set max delay on cross clock domain path for Block/Distributed RAM based FIFO
-
- ## set_max_delay -from [get_cells inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.gcx.clkx/*rd_pntr_gc_reg[*]] -to [get_cells inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.gcx.clkx/*gsync_stage[1].wr_stg_inst/Q_reg_reg[*]] -datapath_only [get_property -min PERIOD $rd_clock]
- ## set_bus_skew -from [get_cells inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.gcx.clkx/*rd_pntr_gc_reg[*]] -to [get_cells inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.gcx.clkx/*gsync_stage[1].wr_stg_inst/Q_reg_reg[*]] $skew_value
-
- ## set_max_delay -from [get_cells inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.gcx.clkx/*wr_pntr_gc_reg[*]] -to [get_cells inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.gcx.clkx/*gsync_stage[1].rd_stg_inst/Q_reg_reg[*]] -datapath_only [get_property -min PERIOD $wr_clock]
- ## set_bus_skew -from [get_cells inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.gcx.clkx/*wr_pntr_gc_reg[*]] -to [get_cells inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.gcx.clkx/*gsync_stage[1].rd_stg_inst/Q_reg_reg[*]] $skew_value
- #set_false_path -from [get_cells -hierarchical -filter {NAME =~ *gsckt_wrst.gic_rst.sckt_wrst_i_reg}] -to [get_cells -hierarchical -filter {NAME =~ *gsckt_wrst.gic_rst.garst_sync_ic[1].rd_rst_inst/Q_reg_reg[0]}]
- #set_false_path -from [get_cells -hierarchical -filter {NAME =~ *gsckt_wrst.gic_rst.garst_sync_ic[3].rd_rst_inst/Q_reg_reg[0]}] -to [get_cells -hierarchical -filter {NAME =~ *gsckt_wrst.gic_rst.garst_sync_ic[1].rd_rst_wr_inst/Q_reg_reg[0]}]
一个具体的应用:
因此vivado中设置:
1)、set_max_delay约束格雷码信号延时在一个源时钟周期之内(控制空满标识的延迟)
2)、set_bus_skew在两个时钟间较块的一个时钟周期内(防止出现错误,丧失格雷码的意义)
这是一份A7的资料,可以看到CE的setup和hold时间远大于D pin的要求,因此使用CE会降低整块FPGA的时序。
但芯片基于功耗的考虑,另当别论。
可以通过tcl指令子啊空白工程下生成对应器件型号的pin delay文件:
*.bit 下载配置文件。
*.bld 报告文件。
*.edn 综合后生成的网表文件。
*.dly 异步延时报告对于最坏的20个路径。
*.fdo 自动创建的仿真宏文件。
*.fnf 文件为floorplan 文件。
*.mpf 文件来存储对设计的物理约束。
*.mfp 由Floorplanner产生的布局规划期的实现指导文件。
*.mrp 映射报告文件。
*.nav 报告文件和bld一样的内容但是察看方式不同。
*.ngd 综合之后的包含了ucf和网表信息的文件。
*.ngc 包含了逻辑设计数据和约束的网表。
*.ncf 网表的约束文件工具自动生成与ucf一样但ucf优先级更高。
*.nmc 物理宏库单元文件包含了物理宏库的定义同时这个物理宏可以在FPGA底层编 辑器中以及HDL编码中实例化。
*.nce 布局布线后设计。
*.ncd 根据所选器件由ngd文件映射后生成的使用CLB和IOB描述一个提供给布局布 线信息的文件。
*.pcf 物理约束文件, 约束设计的物理位置, 含有设计的时钟频率工作电压,All Location and Timing Constraints are written to a PCF during MAP。
*.pwr 功耗报告文件。
*.pad 管脚约束报告。
*.par 布局布线报告。
*.sdf 布局布线后的延时反标文件。
*.twr 映射后静态时序报告。
*.twx 布局布线后静态时序报告。
*.ucf 用户约束文件。
*.v verilog文件。
*.vhd vhdl文件。
*.xml 为用户设置文件保存Xpower的主要设置。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。