---
# System prepended metadata

title: Pseudo Random Pattern

---

#    Pseudo Random Pattern 
![](https://i.imgur.com/8JnLo0p.png)

* 班　　級：資工二2
* 姓　　名：黃柏諭
* 指導老師：林宏益

---

# 實驗內容
* **實驗目的：** 設計具有同步正準位清除功能的Pseudo Random Pattern Generator
* **運用軟體：** VS Code & GTKWAVE
* **實驗步驟：**
    1. 撰寫RTL Code。
    2. 按照輸入、輸出、時脈與clr，撰寫testbench。
    3. 運用Makefile產生.vcd檔。
    4. 使用GTKWAVE產生波形圖。

---

# 程式碼
* PRPG.v
{%gist ba99b7ca44195d068dbc44fa95fa3782 %}
* PRPG_tb.v
{%gist 17ba4d7180e125c61e0463fd80ca4228 %}
* Makefile
{%gist 4733165f819c90cb573a854158c0b3e8 %}


---

# 實驗結果
![](https://i.imgur.com/HxKQaE1.png)

---

# 結論心得
這次連RTL Code都是自己寫，比之前的幾次作業還困難，而這次也有沿用上次寫過的一部分程式碼，雖然最後還是成功做出來了，不過，比較不瞭解的是，為什麼在沒有給定初始值X_out在還沒clr之前，會處在001而不是unknow的狀態？

在PRPG.v的程式碼中，14到16行我註解了一段程式碼，這3行程式碼與第13行程式碼，其實是異曲同工之妙的寫法，很感謝84號同學提供的資料有寫到這種便利的方法可以使用，而我將這幾行程式碼留下來，以便往後重新讀程式碼時，能瞭解當初撰寫的意思。

而這次的作業有與兩位同學一同討論，特別感謝58號同學與84號同學的幫忙。
[參考資料](http://www.ee.ic.ac.uk/pcheung/teaching/ee2_digital/Lecture%205%20-%20Counters%20&%20Shift%20Registers%20(x2).pdf)
[GitHub](https://github.com/Midorante/Pseudo_Random_Pattern_Generator.git)