Diretiva Timescale
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 70 de 90.
A diretiva timescale define a unidade de tempo e a precisão de tempo para a simulação. Ela informa ao simulador como interpretar valores de atraso como #10.
Nas lições anteriores, usamos atrasos como #10 sem especificar o que "10" significa. São 10 nanossegundos? 10 picossegundos? A diretiva timescale responde a essa pergunta.
Sintaxe:
`timescale time_unit / time_precision| Parte | Significado | Exemplo |
|---|---|---|
time_unit | A unidade básica para atrasos | 1ns |
time_precision | Quão precisa a simulação deve ser | 1ps |
O acento grave ` antes de timescale significa que é uma diretiva de compilador.
Exemplo
`timescale 1ns / 1pstime_unit = 1ns→#10significa 10 nanossegundostime_precision = 1ps→ A simulação arredonda para o picossegundo mais próximo
Valores Comuns de Timescale
| Unidade de Tempo | Precisão | Caso de Uso |
|---|---|---|
1ns / 1ns | Nanosegundo | Simulações simples |
1ns / 1ps | Picosegundo | Mais preciso |
1ps / 1ps | Picosegundo | Designs de alta velocidade |
1us / 1ns | Microsegundo | Simulações lentas |
Como Isso Afeta os Atrasos
`timescale 1ns / 1ps
initial begin
#10 a = 1; // Aguarda 10 nanossegundos
endSem timescale, alguns simuladores assumem um padrão (frequentemente 1ns). O ideal é sempre especificá-lo.
Regras Importantes
| Regra | Explicação |
|---|---|
| Deve estar fora dos módulos | Colocado antes de qualquer definição de módulo |
| Símbolo de crase (backtick) | `timescale não 'timescale |
| Unidade de tempo ≥ precisão de tempo | 1ns / 1ps está correto, 1ps / 1ns não está |
| Afeta todos os atrasos no arquivo | Atrasos gerais, atrasos de porta, atrasos de atribuição |
Desafio
O que fazer:
Adicione a diretiva timescale ausente para fazer com que os atrasos representem 10ns, 20ns e 30ns.
Folha de consulta
A diretiva `timescale define a unidade de tempo e a precisão de tempo para a simulação. Ela deve ser colocada antes de qualquer definição de módulo.
`timescale time_unit / time_precision`timescale 1ns / 1ps
initial begin
#10 a = 1; // Waits 10 nanoseconds
endtime_unit— a unidade básica para atrasos (ex:#10= 10ns)time_precision— quão precisamente a simulação arredonda (deve ser ≤ unidade de tempo)
| Timescale | Caso de Uso |
|---|---|
1ns / 1ns | Simulações simples |
1ns / 1ps | Mais preciso |
1ps / 1ps | Designs de alta velocidade |
1us / 1ns | Simulações lentas |
Experimente você mesmo
// TODO: Adicionar diretiva de escala de tempo (1ns / 1ps)
module timescale_challenge;
initial begin
$display("Time %0t", $time);
#10 $display("Time %0t (10ns = 10000ps)", $time);
#10 $display("Time %0t (20ns = 20000ps)", $time);
#10 $display("Time %0t (30ns = 30000ps)", $time);
$finish;
end
endmoduleEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs SoftwareNíveis de Abstração de ProjetoSeu Primeiro MóduloComentários4Operadores Parte 1
Operadores AritméticosOperador de MóduloOperadores de ComparaçãoRecapitulação - Matemática SimplesOperadores Bitwise7Atribuição e Portas Lógicas
Atribuição ContínuaAtribuição com OperadoresPrimitivas de Portas IntegradasPortas AND, OR e NOTPortas XOR e XNORRecapitulação - Circuito de Portas Lógicas10Tomada de Decisão
Instrução IfIf - ElseRecapitulação - Comparador SimplesInstrução CaseCasex e CasezRecapitulação - Projeto de ALU13Temporização e Atrasos
O que são AtrasosAtrasos de PortaAtrasos de AtribuiçãoDiretiva TimescaleGeração de ClockRecapitulação - Controle de Temporização2Tipos de Dados
Tipo WireTipo RegInteger e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores Parte 2
Operadores LógicosOperadores de ReduçãoOperadores de DeslocamentoOperador de ConcatenaçãoOperador CondicionalRecapitulação - Desafio de Operadores3Sistemas de Numeração
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRecapitulação - Formatos de Números6Módulos
Estrutura de MóduloPortas de Entrada e SaídaPortas InoutInstanciação de MóduloMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação - Construa um Módulo