Je veux prendre un paramètre et affecter un nombre de zéros égal au paramètre à une constante, et utiliser cette constante pour la comparaison. Comment fait-on ça ?
Par exemple, disons que le paramètre est 3, je veux créer une constante
n=3'b000;
et utilisez ce n dans une autre déclaration. La seule chose est que je ne sais pas n. Comment initialiser les "n" zéros et à quel type de données Verilog dois-je les affecter?
Votre recherche de l'opérateur de réplication. La syntaxe est {replication_constant{value}}
.
Un exemple de création d'un bus de taille WIDTH
pour tous les zéros.
parameter WIDTH = 3;
wire [WIDTH-1:0] n = {WIDTH{1'b0}};
Pour une description complète de l'opérateur de réplication, voir IEEE std 1800-2012 § 11.4.12.1 "Opérateur de réplication"
Pour développer la réponse de Greg et répondre si vous vouliez 1 puis tous les 0.
Utilisez un mélange de concaténation {a,b}
et réplication {width{c}}
:
wire [WIDTH-1:0] n = { 1'b1, {WIDTH-1{1'b0}} } ;
Tandis que le '0
ou '1
la syntaxe est utilisée dans SystemVerilog 'b0
pour la correspondance de largeur est valide dans les anciens Verilog. Dans verilog-95, la largeur ne correspondrait qu'à 32 bits, mais cela a depuis été corrigé.
Exemple de définition des valeurs de réinitialisation sur les bascules:
reg [7:0] a;
always @(posedge clk or negedge rst_n) begin
if(~rst_n) begin
a <= 'b0 ;
...