134.FPGA常见管脚与时钟的约束方法

1.DDR管脚的约束.ucf文件

图中电平标准为1.35v

复制代码
**SSTL135** 是一种重要的数字电路电平标准,全称为 **Stub Series Terminated Logic for 1.35V**。

## 主要特性:

### 电压规格:
- **电源电压:1.35V** 
- 主要用于DDR3、DDR3L等内存接口
- 比之前的SSTL_18(1.8V)功耗更低

### 技术特点:
1. **串联终端匹配**
   - 在驱动端串联电阻进行阻抗匹配
   - 减少信号反射,提高信号完整性

2. **差分参考电压**
   - 使用VREF作为输入信号的参考电压(通常为VDDQ/2 ≈ 0.675V)
   - 提供更好的噪声容限

3. **高速性能**
   - 专为高速存储器接口设计
   - 支持DDR3的标准数据速率(800-1600 Mbps)

## 应用场景:

### 主要用途:
- **DDR3 SDRAM接口**
- **DDR3L SDRAM接口** 
- 其他1.35V高速并行总线

### 在你的设计中:
```ucf
NET "ddr3_addr[0]" LOC = "C9" | IOSTANDARD = SSTL135 | VCCAUX_IO = HIGH ;
```
这表明你的FPGA通过DDR3接口与外部存储器连接,使用SSTL135电平标准来确保信号完整性。

## 相关标准:
- **SSTL_18**:1.8V版本,用于DDR2
- **SSTL_15**:1.5V版本
- **SSTL135**:1.35V版本,用于DDR3/DDR3L
- **POD12**:1.2V版本,用于DDR4

这种电平标准在高速存储器接口中至关重要,能有效解决信号完整性问题。

NET   "ddr3_addr[0]"                           LOC = "C9"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_addr[10]"                          LOC = "J8"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_addr[11]"                          LOC = "E6"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_addr[12]"                          LOC = "J11"   |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_addr[13]"                          LOC = "G6"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_addr[14]"                          LOC = "D6"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_addr[1]"                           LOC = "J10"   |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_addr[2]"                           LOC = "C4"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_addr[3]"                           LOC = "A2"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_addr[4]"                           LOC = "F8"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_addr[5]"                           LOC = "B7"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_addr[6]"                           LOC = "H7"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_addr[7]"                           LOC = "A7"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_addr[8]"                           LOC = "H6"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_addr[9]"                           LOC = "D5"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_ba[0]"                             LOC = "E7"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_ba[1]"                             LOC = "F9"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_ba[2]"                             LOC = "B2"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_cas_n"                             LOC = "D9"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_ck_n[0]"                           LOC = "C7"    |     IOSTANDARD = DIFF_SSTL135         |     VCCAUX_IO = HIGH        ;
NET   "ddr3_ck_p[0]"                           LOC = "C8"    |     IOSTANDARD = DIFF_SSTL135         |     VCCAUX_IO = HIGH        ;
NET   "ddr3_cke[0]"                            LOC = "G9"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_cs_n[0]"                           LOC = "D8"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dm[0]"                             LOC = "L5"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dm[1]"                             LOC = "K5"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dm[2]"                             LOC = "F3"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dm[3]"                             LOC = "J1"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[0]"                             LOC = "M2"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[10]"                            LOC = "N7"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[11]"                            LOC = "J6"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[12]"                            LOC = "K8"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[13]"                            LOC = "K6"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[14]"                            LOC = "M7"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[15]"                            LOC = "K7"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[16]"                            LOC = "D3"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[17]"                            LOC = "F4"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[18]"                            LOC = "D4"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[19]"                            LOC = "G4"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[1]"                             LOC = "L4"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[20]"                            LOC = "D1"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[21]"                            LOC = "E2"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[22]"                            LOC = "C1"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[23]"                            LOC = "E1"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[24]"                            LOC = "L3"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[25]"                            LOC = "H1"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[26]"                            LOC = "K3"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[27]"                            LOC = "G1"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[28]"                            LOC = "J4"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[29]"                            LOC = "H4"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[2]"                             LOC = "L2"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[30]"                            LOC = "J3"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[31]"                            LOC = "H3"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[3]"                             LOC = "M6"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[4]"                             LOC = "N1"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[5]"                             LOC = "N4"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[6]"                             LOC = "M1"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[7]"                             LOC = "M4"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[8]"                             LOC = "N6"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dq[9]"                             LOC = "J5"    |     IOSTANDARD = SSTL135_T_DCI        |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dqs_n[0]"                          LOC = "N2"    |     IOSTANDARD = DIFF_SSTL135_T_DCI   |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dqs_n[1]"                          LOC = "L8"    |     IOSTANDARD = DIFF_SSTL135_T_DCI   |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dqs_n[2]"                          LOC = "F2"    |     IOSTANDARD = DIFF_SSTL135_T_DCI   |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dqs_n[3]"                          LOC = "K1"    |     IOSTANDARD = DIFF_SSTL135_T_DCI   |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dqs_p[0]"                          LOC = "N3"    |     IOSTANDARD = DIFF_SSTL135_T_DCI   |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dqs_p[1]"                          LOC = "M8"    |     IOSTANDARD = DIFF_SSTL135_T_DCI   |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dqs_p[2]"                          LOC = "G2"    |     IOSTANDARD = DIFF_SSTL135_T_DCI   |     VCCAUX_IO = HIGH        ;
NET   "ddr3_dqs_p[3]"                          LOC = "K2"    |     IOSTANDARD = DIFF_SSTL135_T_DCI   |     VCCAUX_IO = HIGH        ;
NET   "ddr3_odt[0]"                            LOC = "B6"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_ras_n"                             LOC = "E8"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_reset_n"                           LOC = "A5"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_we_n"                              LOC = "F5"    |     IOSTANDARD = SSTL135              |     VCCAUX_IO = HIGH        ;
NET   "ddr3_addr[0]"                           LOC = "C9"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_addr[10]"                          LOC = "J8"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_addr[11]"                          LOC = "E6"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_addr[12]"                          LOC = "J11"   |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_addr[13]"                          LOC = "G6"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_addr[14]"                          LOC = "D6"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_addr[1]"                           LOC = "J10"   |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_addr[2]"                           LOC = "C4"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_addr[3]"                           LOC = "A2"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_addr[4]"                           LOC = "F8"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_addr[5]"                           LOC = "B7"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_addr[6]"                           LOC = "H7"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_addr[7]"                           LOC = "A7"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_addr[8]"                           LOC = "H6"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_addr[9]"                           LOC = "D5"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_ba[0]"                             LOC = "E7"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_ba[1]"                             LOC = "F9"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_ba[2]"                             LOC = "B2"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_cas_n"                             LOC = "D9"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_ck_n[0]"                           LOC = "C7"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_ck_p[0]"                           LOC = "C8"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_cke[0]"                            LOC = "G9"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_cs_n[0]"                           LOC = "D8"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dm[0]"                             LOC = "L5"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dm[1]"                             LOC = "K5"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dm[2]"                             LOC = "F3"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dm[3]"                             LOC = "J1"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[0]"                             LOC = "M2"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[10]"                            LOC = "N7"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[11]"                            LOC = "J6"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[12]"                            LOC = "K8"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[13]"                            LOC = "K6"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[14]"                            LOC = "M7"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[15]"                            LOC = "K7"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[16]"                            LOC = "D3"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[17]"                            LOC = "F4"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[18]"                            LOC = "D4"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[19]"                            LOC = "G4"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[1]"                             LOC = "L4"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[20]"                            LOC = "D1"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[21]"                            LOC = "E2"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[22]"                            LOC = "C1"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[23]"                            LOC = "E1"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[24]"                            LOC = "L3"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[25]"                            LOC = "H1"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[26]"                            LOC = "K3"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[27]"                            LOC = "G1"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[28]"                            LOC = "J4"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[29]"                            LOC = "H4"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[2]"                             LOC = "L2"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[30]"                            LOC = "J3"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[31]"                            LOC = "H3"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[3]"                             LOC = "M6"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[4]"                             LOC = "N1"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[5]"                             LOC = "N4"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[6]"                             LOC = "M1"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[7]"                             LOC = "M4"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[8]"                             LOC = "N6"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dq[9]"                             LOC = "J5"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dqs_n[0]"                          LOC = "N2"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dqs_n[1]"                          LOC = "L8"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dqs_n[2]"                          LOC = "F2"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dqs_n[3]"                          LOC = "K1"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dqs_p[0]"                          LOC = "N3"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dqs_p[1]"                          LOC = "M8"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dqs_p[2]"                          LOC = "G2"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_dqs_p[3]"                          LOC = "K2"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_odt[0]"                            LOC = "B6"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_ras_n"                             LOC = "E8"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_reset_n"                           LOC = "A5"    |    |     VCCAUX_IO = HIGH        ;

NET   "ddr3_we_n"                              LOC = "F5"    |    |     VCCAUX_IO = HIGH        ;
复制代码
**LDM** 和 **UDM** 管脚在DDR存储器中起到关键的数据掩码作用,特别是在**x16配置的DDR器件**中。

## 基本作用:

### **数据掩码功能**:
- **屏蔽写入操作**中的特定字节
- **不影响读取操作**(读取时这些管脚无效)

## 具体分工:

### **LDM** - Lower Data Mask
- 屏蔽**低字节**(Data[7:0])的写入
- 对应数据总线的低8位

### **UDM** - Upper Data Mask  
- 屏蔽**高字节**(Data[15:8])的写入
- 对应数据总线的高8位

## 工作方式:

### 写入时序:
```
时钟周期:  T0   T1   T2   T3
数据:     D0   D1   D2   D3
LDM:      0    1    0    0    (T1周期屏蔽低字节)
UDM:      0    0    1    0    (T2周期屏蔽高字节)
```
- **LDM/UDM = 0**:数据正常写入
- **LDM/UDM = 1**:对应字节的数据被忽略,不写入存储器

## 应用场景:

### 1. **部分数据更新**
```c
// 只更新32位数据中的高16位,保持低16位不变
write_data = 0x12345678;
UDM = 0;  // 允许高字节写入
LDM = 1;  // 屏蔽低字节写入
```

### 2. **字节使能控制**
- 实现类似SRAM的字节使能功能
- 提高写入效率,减少读-修改-写操作

## 在不同数据宽度下的变化:

### x8器件:
- 只有**DM**(单数据掩码管脚)
- 控制整个8位数据字节

### x16器件:
- **LDM** + **UDM**(两个数据掩码管脚)
- 分别控制低8位和高8位

### x32/x64配置:
- 在FPGA中通常使用多个掩码信号
- 如**DQM[3:0]** 控制4个字节

## 在你的FPGA设计中:
```ucf
NET "ddr3_ldm" LOC = "..." | IOSTANDARD = SSTL135 ;
NET "ddr3_udm" LOC = "..." | IOSTANDARD = SSTL135 ;
```
这些管脚需要正确约束,确保在写入操作时能够精确控制哪些数据字节实际写入DDR3存储器。
复制代码
**SSTL135_T_DCI** 是一种高级的电平标准,在基本的SSTL135基础上增加了**DCI**(Digitally Controlled Impedance)技术。

## 核心组成:

### **SSTL135**
- 1.35V Stub Series Terminated Logic
- 用于DDR3L内存接口

### **_T** 
- 表示**终端匹配在驱动端**
- 串联终端匹配(Source Termination)

### **_DCI**
- **数字控制阻抗**(Digitally Controlled Impedance)
- FPGA自动调整输出阻抗以匹配传输线特性阻抗

## DCI技术的工作原理:

### 自动阻抗匹配:
```verilog
// FPGA内部通过校准电路自动调整
驱动阻抗 = 传输线特性阻抗 (通常50Ω)
```

### 校准机制:
1. 使用外部参考电阻(通常连接到VRN/VRP管脚)
2. 上电时自动校准输出驱动阻抗
3. 适应PVT(工艺、电压、温度)变化

## 优势特点:

### 1. **信号完整性提升**
- 自动消除阻抗失配
- 减少信号反射和振铃

### 2. **简化PCB设计**
- 减少外部终端电阻需求
- 降低BOM成本和布局复杂度

### 3. **自适应性能**
- 自动补偿温度、电压变化
- 保持最佳的信号质量

## 典型应用:

```ucf
NET "ddr3_dq[0]"   LOC = "A10" | IOSTANDARD = SSTL135_T_DCI ;
NET "ddr3_addr[0]" LOC = "B12" | IOSTANDARD = SSTL135_T_DCI ;
NET "ddr3_ck_p"    LOC = "C15" | IOSTANDARD = SSTL135_T_DCI ;
```

## 硬件要求:

### 必需条件:
- **外部参考电阻**(通常240Ω或100Ω)
- 连接到FPGA的**VRN/VRP**管脚
- 支持DCI的FPGA型号(如Xilinx 7系列、UltraScale等)

### 配置示例:
```
VRN管脚 -- 240Ω -- GND
VRP管脚 -- 240Ω -- VCCAUX
```

## 与普通SSTL135对比:

| 特性 | SSTL135 | SSTL135_T_DCI |
|------|---------|---------------|
| 终端匹配 | 需要外部电阻 | 内部集成 |
| 阻抗精度 | 依赖外部元件 | 自动校准 |
| 温度适应性 | 差 | 优秀 |
| 设计复杂度 | 高 | 低 |

这种电平标准在现代FPGA设计中非常常见,特别是在高速存储器接口中,能显著提高系统可靠性。
特性 SSTL135 SSTL135_T_DCI
终端匹配 需要外部电阻 内部集成
阻抗精度 依赖外部元件 自动校准
温度适应性 优秀
设计复杂度

2.普通单端时钟的创建

复制代码
create_clock -period 10.000 -name clk [get_ports clk]
create_clock -period 8.000 -name rgmii_rx_clk -waveform {0.000 4.000} [get_ports rgmii_rxc]
set_property PACKAGE_PIN C8 [get_ports clk]
set_property PACKAGE_PIN V19 [get_ports rst_n]

set_property IOSTANDARD SSTL135 [get_ports clk]

3.差分时钟过IBUFDS后转系统单端时钟约束方法

复制代码
create_clock -add -name sysclk -period 10.000  [get_ports I_sysclk_p]
set_property PACKAGE_PIN G7 [get_ports I_sysclk_p]
set_property IOSTANDARD DIFF_SSTL135 [get_ports I_sysclk_p]

4.对于时钟管脚是约束成LVCMOS18还是SSTL18

复制代码
你观察得很仔细!确实在很多实际板卡设计中会看到将**系统时钟约束为SSTL**的情况,这背后有合理的工程考量。

## 为什么实际设计中常用SSTL约束时钟:

### 1. **信号完整性优化**
```ucf
NET "sys_clk" LOC = "E3" | IOSTANDARD = SSTL18 ;
```
- **SSTL有更好的噪声容限**(使用VREF)
- 更适合**高速时钟传输**(>200MHz)
- 提供**终端匹配**,减少反射

### 2. **与DDR接口保持一致**
很多系统的时钟与DDR存储器相关:
```ucf
# DDR2系统
NET "ddr2_dq[0]"    IOSTANDARD = SSTL18 ;
NET "sys_clk"       IOSTANDARD = SSTL18 ;  # 统一标准

# DDR3系统  
NET "ddr3_dq[0]"    IOSTANDARD = SSTL15 ;
NET "sys_clk"       IOSTANDARD = SSTL15 ;  # 统一标准
```

### 3. **实际性能表现**
- 在**高频场合**,SSTL比LVCMOS有更好的眼图
- 特别是在**背板连接**、**长距离传输**时

## 两种选择的工程权衡:

### **LVCMOS18**:
```ucf
# 优点:简单、无需VREF、功耗稍低
# 适用:低频时钟(<100MHz)、板内短距离传输
```

### **SSTL18**:
```ucf
# 优点:高速性能好、噪声容限高、信号质量优
# 适用:高频时钟、长距离传输、对抖动要求严格的系统
```

## 实际设计中的选择依据:

### 选择SSTL当:
- 时钟频率 **> 150MHz**
- 需要与DDR接口电平一致
- PCB布线较长或有连接器
- 对时钟抖动要求严格

### 选择LVCMOS当:
- 时钟频率 **< 100MHz**
- 简单的板内时钟分布
- 希望简化电源设计(无需VREF)

## 结论:

**你看到的很多板卡约束成SSTL是正确的工程选择**,特别是在:
- 高性能计算板卡
- 网络处理板卡  
- 带有DDR存储器的系统
- 高速串行接口的参考时钟

所以你的观察是准确的------在实际工程中,SSTL确实经常被用于系统时钟约束,这是基于信号完整性的合理考量。
相关推荐
第二层皮-合肥9 小时前
AD导出FPGA管脚的方法
fpga开发
ehiway12 小时前
国际先进!中科亿海微国产嵌入式FPGA IP核及EDA系统设计技术通过科技成果评价
网络协议·tcp/ip·fpga开发
北城笑笑12 小时前
FPGA 49 ,Xilinx Vivado 软件术语解析(Vivado 界面常用英文字段详解,以及实际应用场景和注意事项 )
fpga开发·fpga
XINVRY-FPGA16 小时前
XCAU10P-2SBVB484I Xilinx Artix UltraScale+ FPGA
嵌入式硬件·fpga开发·云计算·硬件工程·dsp开发·射频工程·fpga
bnsarocket17 小时前
Verilog和FPGA的自学笔记7——流水灯与时序约束(XDC文件的编写)
笔记·fpga开发
ARM+FPGA+AI工业主板定制专家1 天前
基于ZYNQ的目标检测算法硬件加速器优化设计
人工智能·目标检测·计算机视觉·fpga开发·自动驾驶
cycf1 天前
时钟特性约束(四)
fpga开发
江苏学蠡信息科技有限公司2 天前
STM32中硬件I2C的时钟占空比
stm32·单片机·fpga开发
OliverH-yishuihan2 天前
FPGA 入门 3 个月学习计划表
学习·fpga开发