Notas de estudo de projeto de CI digital
Circuito síncrono, circuito assíncrono, reinicialização síncrona, reinicialização assíncrona
1. 同步电路,异步电路
2. 同步复位,异步复位
2.1 同步复位与异步复位的对比
2.2. 同步复位代码与结构
2.3. 异步复位代码与结构
2.4. 异步复位同步释放代码与结构
1. Circuito síncrono, circuito assíncrono
- A principal diferença entre um circuito síncrono e um circuito assíncrono é se o disparo do circuito está sincronizado com o relógio do drive;
- Do ponto de vista comportamental: Todos os circuitos processam dados de forma síncrona sob a transição válida do relógio;
Circuito síncrono | Circuito assíncrono | |
---|---|---|
Número de relógios | apenas um | Pode ser múltiplo |
Tipo de relógio | Homeomorfismo | 1. Fontes diferentes; 2. Fases homólogas e diferentes |
Aventura competitiva | não | Ter |
Design de acoplamento | Totalmente acoplado, não conduz à otimização da área e do consumo de energia | Sem acoplamento, design flexível |
Síntese / Análise | simples | complexo |
2. Reinicialização síncrona, reinicialização assíncrona
- 2.1 Comparação de reset síncrono e reset assíncrono
Reinicialização síncrona | Reinicialização assíncrona | |
---|---|---|
Características | O sinal de reset só é válido quando chega a borda válida do clock. (A partir da configuração da lógica combinatória do terminal DFF-D) | Independentemente de vir ou não a borda válida do clock, desde que o sinal de reset seja válido, ele é resetado. (A partir da configuração de DFF) |
Verilog | sempre @ (clk posedge) | always @ (posedge clk ou negedge primeiro) |
vantagem | 1. É bom para a simulação do emulador 2. Ele pode filtrar glitches maiores do que a frequência do clock 3. Se for um circuito sequencial totalmente síncrono, é bom para análise de tempo. | 1. Design simples 2. Economize recursos (algumas bibliotecas de dispositivos têm DFF assíncrono) 3. A identificação do sinal assíncrono é conveniente, o que é propício para o uso da porta de redefinição global GSR do FPGA |
Desvantagem | 1. A duração efetiva do sinal de reset deve ser maior do que o ciclo do clock, caso contrário ele não será reconhecido e o reset será concluído. 2. Considere o atraso lógico combinacional e o atraso de reset skew. 3. A entrada de dados acumulados precisa ser inserido na lógica combinacional, que consome recursos lógicos. | 1. Os sinais assíncronos são suscetíveis a falhas. 2. A metaestável é propensa a ocorrer (o sinal de reinicialização está próximo à borda válida do sinal de clock quando o sinal de reinicialização é liberado) |
Resumindo | Recomenda-se o uso de redefinição assíncrona e liberação síncrona |
- 2.2 Código e estrutura de redefinição síncrona
module dff_syn(
input clk,
input rst_n,
input din,
output reg dout
);
always@(posedge clk)
if(!rst_n)
dout <= 1'b0;
else
dout <= din;
endmodule
- 2.3 Código e estrutura de redefinição assíncrona
module dff_asyn(
input clk,
input rst_n,
input din,
output reg dout
);
always@(posedge clk or negedge rst_n)
if(!rst_n)
dout <= 1'b0;
else
dout <= din;
endmodule
- 2.4 Reinicialização assíncrona e código e estrutura de liberação síncrona
module asyn_dff_syn(
input clk,
input rst_n,
input din,
output wire dout
);
reg din_reg0;
reg din_reg1;
always@(posedge clk or negedge rst_n)
if(!rst_n)begin
din_reg0 <= 1'b0;
din_reg1 <= 1'b0;
end
else begin
din_reg0 <= din;
din_reg1 <= din_reg0;
end
assign dout = din_reg1;
endmodule
[Nota]: Notas de estudo pessoais, se houver erros, sinta-se à vontade para me esclarecer, isso é educado ~~~