FPGA中为什么不能双时钟触发

always@()的敏感源中为什么不能双边沿触发?

1 双沿触发写法

always@(posedge clk or negedge clk) 
 	begin 
    	A<=1’b0;
	end

这种写法是错误的,因为在FPGA的内部所有的寄存器只支持单沿采样触发,因此在编写RTL级代码时,只能使用单沿采样,如果像上面一样写成双沿采样,则Vivado或QuartusPrime等FPGA开发工具会报语法错误。

2 双沿采样的实现

对于Xilinx的器件,要实现双沿采样必须使用IDDR、ODDR原语实现对信号的双沿采样,但是IDDR、ODDR只能用于输入输出端口处,不能用于内部逻辑。

	ODDR #(
   .DDR_CLK_EDGE("OPPOSITE_EDGE"), // "OPPOSITE_EDGE" or 		 "SAME_EDGE" 
      .INIT(1'b0),    // Initial value of Q: 1'b0 or 1'b1
      .SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC" 
   ) ODDR_inst (
      .Q(Q),   // 1-bit DDR output
      .C(C),   // 1-bit clock input
      .CE(CE), // 1-bit clock enable input
      .D1(D1), // 1-bit data input (positive edge)
      .D2(D2), // 1-bit data input (negative edge)
      .R(R),   // 1-bit reset
      .S(S)    // 1-bit set
   );
 IDDR #(
      .DDR_CLK_EDGE("OPPOSITE_EDGE"), // "OPPOSITE_EDGE", "SAME_EDGE" 
                                      //    or "SAME_EDGE_PIPELINED" 
      .INIT_Q1(1'b0), // Initial value of Q1: 1'b0 or 1'b1
      .INIT_Q2(1'b0), // Initial value of Q2: 1'b0 or 1'b1
      .SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC" 
   ) IDDR_inst (
      .Q1(Q1), // 1-bit output for positive edge of clock
      .Q2(Q2), // 1-bit output for negative edge of clock
      .C(C),   // 1-bit clock input
      .CE(CE), // 1-bit clock enable input
      .D(D),   // 1-bit DDR data input
      .R(R),   // 1-bit reset
      .S(S)    // 1-bit set
   );

相关推荐

  1. FPGA为什么时钟触发

    2024-01-21 09:10:06       55 阅读
  2. ping为什么加http

    2024-01-21 09:10:06       68 阅读
  3. STM32为什么跑Linux?

    2024-01-21 09:10:06       38 阅读
  4. static为什么修饰String类

    2024-01-21 09:10:06       37 阅读
  5. 【pytest】为什么使用__init__

    2024-01-21 09:10:06       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-21 09:10:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-21 09:10:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-21 09:10:06       82 阅读
  4. Python语言-面向对象

    2024-01-21 09:10:06       91 阅读

热门阅读

  1. RPC教程 2.支持并发与异步的客户端

    2024-01-21 09:10:06       52 阅读
  2. QGraphicsView 如何让图形大小适配窗口

    2024-01-21 09:10:06       48 阅读
  3. OSPF:开放式最短路径优先协议

    2024-01-21 09:10:06       47 阅读
  4. 【机器学习300问】13、学习率曲线有什么作用?

    2024-01-21 09:10:06       55 阅读