跳至内容
wiki
用户工具
登录
站点工具
搜索
工具
显示页面
修订记录
导出 PDF
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您在这里:
start
»
edastudy
»
verilog
您的足迹:
edastudy:verilog
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== verilog ====== vcs仿真参考 [[edastudy:vcs:vcs使用]] ===== - 异步复位 ===== 异步复位,同步释放,复位释放时需和clk满足时序关系。 <code verilog> always@(posedge clk or negedge rst_n) begin if (!rst_n) begin end else begin end end </code> ===== - 同步复位 ===== 同步复位时,rst_n拉低, 时钟需要一直有。 <code verilog> always@(posedge clk) begin if (!rst_n) begin end else begin end end </code> ===== - 无毛刺切换电路 ===== {{:edastudy:pasted:20240927-170103.png?nolink}} ===== - 操作符优先级 ===== {{:edastudy:pasted:20240517-150946.png?nolink}} ===== - 驱动强度 ===== Drive strength \\ four driving strengths: \\ <code> supply strong pull weak </code> <code verilog> assign (strong1, pull0) mynet = enable ; </code> The charge strength specification shall be used only with trireg nets. \\ three charge storage strengths: \\ <code> large medium small </code> <code verilog> # Strength name Strength level # supply0 7 # strong0 6 # pull0 5 # large0 4 # weak0 3 # medium0 2 # small0 1 # highz0 0 # highz1 0 # small1 1 # medium1 2 # weak1 3 # large1 4 # pull1 5 # strong1 6 # supply1 7 </code> ===== - define使用 ===== <code verilog> # `` 拼接 `define NAME yb `define INST `NAME``_inst 等价于yb_inst </code> <code verilog> # args方式 # 比如有如下define定义 `define append(f) f``_master # 当使用时 `append(clock) 等价于 clock_master </code> <code verilog> `define H(x) "Hello, x" $display(`H(world)); #打印内容 Hello, world </code> ===== - fwrite ===== <code verilog> module file_test( ); reg [3:0]data[0:15]; reg [3:0]data2[0:15]; integer handle1; integer i=0; initial begin $readmemb("num.txt",data);//默认文件在工程所在路径目录 handle1 = $fopen("num2.txt","w"); repeat(16) begin $fwrite(handle1,"%d\n",data[15-i]); i = i+1; end $fclose(handle1); end endmodule </code> ===== - module parameter ===== 如果port width是参数 <code verilog> module a #(parameter WIDTH=8) ( input [WIDTH-1:0] datai, output [WIDTH-1:0] datao ); assign datao = datai; endmodule </code> ===== - generate ===== <code verilog> wire [7:0] d; wire [7:0] q; wire [7:0] q2; a u_a[7:0] ( .clk (clk), .rst_n (rst_n), .d (d[7:0]), .q (q[7:0]) ); genvar i; generate for (i=0;i<8;8=i+1) begin: a2inst a u_a2 ( .clk (clk), .rst_n (rst_n), .d (d[i]), .q (q2[i]) ); end endgenerate </code> ===== - 加延时 ===== <code verilog> initial begin forever #5 clk = ~clk; end initial begin #5 rst_n = 1'b1; end assign #1 clk2 = clk1; always @(posedge clk) data2 <= #1 data1; </code> ===== - 仿真force注意 ===== force某一个net时,要意识到,其它这个force会前后传递的\\ 不只是当前看到的PIN的值被force成期望值,而且从这个点向两个方向都会传递值,传递出去的值可能不是仿真预期的,最后造成仿真FAIL。 如果不想影响更多的点,可能是要想办法把线给断开,只有期望点才会被force。
edastudy/verilog.txt
· 最后更改: 2025/06/03 16:27 由
user01
页面工具
显示页面
修订记录
反向链接
导出 PDF
回到顶部