#**實作:設計Pseudo Random Pattern Generator具有同步正準位設定的功能,當設定時,輸出為110~2~ ,並撰寫testbench。** ###### 班級:資工二一 學號:1410932049 姓名:鍾宏昌 --- ## 設計思路 直接將D flip flop 更改,將enable啟動後的輸出設為二進位數110,並讓輸出q的值函數($random)+d。 ## 程式碼 ### PRPG.v ```verilog= module PRPG ( input clk, input rst_n, input en, input [2:0]d, output reg [2:0]q ); always@(posedge clk or negedge rst_n) if (!rst_n) q <= #1 3'b110; else if (en) q <= #1 $random+d; endmodule ``` ### PRPG_tb.v(testbench) ```verilog= module PRPG_tb; reg clk; reg rst_n; reg en; reg [2:0]d; parameter PERIOD = 20; parameter real DUTY_CYCLE = 0.5; parameter OFFSET = 0; initial begin #OFFSET; forever begin clk = 1'b0; #(PERIOD-(PERIOD*DUTY_CYCLE)) clk = 1'b1; #(PERIOD*DUTY_CYCLE); end end initial begin #10 rst_n=1; #10 rst_n=0; #10 rst_n=1; end initial begin #5 en=1; #5 en=0; #5 en=1; end initial begin d=3'b000; #20 d=3'b001; #20 d=3'b010; #100 $finish; end initial begin $dumpfile("PRPG.vcd"); $dumpvars(0, PRPG_tb); end PRPG PRPG_tb( .clk(clk), .rst_n(rst_n), .en(en), .d(d) ); endmodule ``` ## 波形圖 ### PRPG.vcd  ## 心得 我感覺我有比較成長了,至少這次我沒有遇到難點從而花費過多時間,雖然我想可能只是這次的題目比較簡單,或許下次只要再難一點,我說不定會寫不出來。 ## 程式碼存放處 https://github.com/s1410932049/HW5 ## 參考資料 http://yhhuang1966.blogspot.com/2019/06/latch-flip-flop.html https://www.cnblogs.com/oomusou/archive/2008/08/09/1264292.html https://blog.csdn.net/sdvch/article/details/9037497
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up