---
# System prepended metadata

title: 數位邏輯設計實習(作業5)

---

# 數位邏輯設計實習(作業5)

###### 

> <font size=5 color="#0080FF" face="微軟正黑體"><b>1410932050 資工2-1 魏庠緯 </b></font>
> <font size=5><b>Githuub網址:[Tommywei0628](https://github.com/Tommywei0628/homework5.git)</b></font>
# :memo:實驗目的
><font size=5 face="微軟正黑體"><b>編寫出一個亂數產生器。</b></font>
# :memo:實驗內容
:::info
:pushpin: <font size=5 face="微軟正黑體"><b>線性反饋移位暫存器</b></font>
:::
>![](https://imgur.com/zkitlX4.png)
><font size=5 face="微軟正黑體">移位原理構造。</font>
# :memo:實驗步驟
><font size=5 face="微軟正黑體"><b>依照題目內容選寫出以下程式碼</b></font>
>>PRPG.v 
```verilog=
module PRPG (Q,clk,rst);
    input clk,rst;
    output [2:0]Q;
    reg [2:0]Q;

    always @(posedge clk) begin
        if (rst) begin
            Q<=3'b110;
        end
        else begin
        Q[0]<=Q[2]^Q[0];
        Q[1]<=Q[0];
        Q[2]<=Q[1];
        end
    end
endmodule


```
><font size=4 face="微軟正黑體"><b>透過朋友說明所以這邊根據題目需求使用了普通的移位方式。</b></font>
>>PRPG_tb.v
```verilog=
module  PRPG_tb;
  reg clk,rst;
  wire [2:0]Q;
  parameter PERIOD=20;
  parameter real DUTY_CYCLE=0.5;
  parameter OFFSET=0;
initial begin
  #OFFSET;
  forever begin
    clk=1'b1;
    #(PERIOD-(PERIOD*DUTY_CYCLE)) clk=1'b0;
    #(PERIOD*DUTY_CYCLE);
  end
end
initial begin
  rst=1'b1;
  #20   rst=1'b0;
  #200 $finish;
end
initial begin
$dumpfile("PRPG.vcd");
  $dumpvars(0, PRPG_tb);
end
  PRPG PRPG_tb(
    .clk(clk),
    .rst(rst),
    .Q(Q)
  );
endmodule
```
><font size=4 face="微軟正黑體"><b>簡單的設計</b></font>
# :memo: 實驗結果
><font size=5 face="微軟正黑體"><b>make後出來的波型</b></font>
![](https://imgur.com/fgc1zeE.png)

# :memo: 實驗討論
><font face="微軟正黑體" size=5><b>這題目是讓我們模擬出一個簡單的亂數產生器，看似難但其實還挺簡單的。</b></font>
# :memo: 實驗心得
><font face="微軟正黑體" size=5><b>這次作業內容我有問別人的意見，並使用了他所提出的想法，這也讓我體驗到跟別人交流並實現也是一個解決問題的好方式。