[Verilog]用Verilog實現串并轉換/并串裝換

用Verilog實現串并轉換/并串裝換

摘要

一、串并轉換模塊

? ? ? ?串轉并就是將低3位信號和輸入信號一起賦值。因為經過轉換后,碼元速率會將為原來四分之一,所以設置4分頻時鐘,將其輸出。而并轉串就是不斷右移,取高位輸出。

module serial2para(input clk, rst_n,input ser_data_in,output reg [3:0] para_data_out
);parameter N = 4;//四分頻模塊
reg [13:0]  cnt;
reg         clk_out;
reg [3:0]   data;always @(posedge clk or negedge rst_n) beginif(cnt == N/2 - 1) begincnt     <= 14'b0;clk_out <= ~clk_out;end elsecnt <= cnt + 1'b1;
endalways @(posedge clk or negedge rst_n) beginif(~rst_n) data <= 4'h0;else       data <= {data[2:0], d};
endalways @(posedge clk_out or negedge rst_n) beginif(~rst_n) para_data_out <= 4'h0;else       para_data_out <= data;
endendmodule

1.1 利用移位寄存器

? ? ? ? 串行轉并行數據輸出:采用位拼接技術(移位寄存器),將串行的數據總數先表示出來,然后發送一位數據加一,后面的接收的這樣標志:para_data_o <= {para_data_o[6:0], ser_data_i };

module serial_parallel #(parameter DATA_WIDTH     = 8
)(input                          clk,input                          rst_n,input                          left_shift,input                          ser_data_in,   //1位串行輸入output                         valid,output reg [DATA_WIDTH-1:0]    para_data_o	//8位并行輸出
);parameter CNT_WIDTH = $clog2(DATA_WIDTH);reg [CNT_WIDTH-1:0]              ser_bit_cnt;always @(posedge clk or negedge rst_n) beginif (~rst_n)para_data_o <= {DATA_WIDTH{1'b0}};else if (left_shift == 1'b1)para_data_o <= {para_data_o[DATA_WIDTH-2:0], ser_data_in};	//低位先賦值,左移else if(left_shift == 1'b0)para_data_o <= {ser_data_in, para_data_o[DATA_WIDTH-1:1]};	//高位先賦值,右移
endalways @(posedge clk or negedge rst_n) beginif(~rst_n) beginser_bit_cnt <= {CNT_WIDTH{1'b0}};valid       <= 1'h0;endelse if(ser_bit_cnt == DATA_WIDTH-1) beginser_bit_cnt <= {CNT_WIDTH{1'b0}};valid = 1'b1;endelse beginser_bit_cnt <= ser_bit_cnt + 1'b1;valid       <= 1'b0;end
endendmodule

1.2 利用計數器

? ? ? ? 利用計數器cnt 時鐘計數,開始數據先給高位,每過一個時鐘周期,數據便給低一位。這樣便可以達到串轉并的效果。

module serial_parallel(parameter         DATA_WITH = 8
)(input                      clk,input                      rst_n,input                      ser_data_in,input                      valid,output reg [DATA_WITH-1:0] para_data_o
);parameter                      CNT_WIDTH = $clog2(DATA_WITH);//msb first   most significant bit 表示二進制數據的最高位
reg   [DATA_WITH-1:0]   cnt; 	//計數器0-7  always @(posedge clk or negedge rst_n)beginif(rst_n == 1'b0) beginpara_data_o <= {DATA_WITH{1'b0}};cnt <= {CNT_WIDTH{1'd0}};endelse beginpara_data_o[DATA_WITH-1 - cnt] <= ser_data_in;	//高位先賦值cnt <= cnt + 1'b1;end
end/*
//lsb first	(least significant bit) 表示二進制數據的最低位reg     [2:0]   cnt;always @(posedge clk or negedge rst_n)beginif(rst_n == 1'b0) beginpara_data_o <= {DATA_WITH{1'b0}};cnt <= {CNT_WIDTH{1'd0}};endelse beginpara_data_o[cnt] <= data_i;   //低位先賦值cnt <= cnt + 1'b1;end
end
*/endmodule

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215875.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215875.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215875.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android 11.0 systemui鎖屏頁面時鐘顯示樣式的定制功能實現

1.前言 在11.0的系統ROM定制化開發中,在進行systemui的相關開發中,當開機完成后在鎖屏頁面就會顯示時間日期的功能,由于 開發產品的需求要求時間顯示周幾上午下午接下來就需要對鎖屏顯示時間日期的相關布局進行分析,然后實現相關功能 效果圖如圖: 2.systemui鎖屏頁面時鐘顯…

mysql原理--B+樹索引

1.沒有索引的查找 1.1.在一個頁中的查找 (1). 以主鍵為搜索條件 可以在 頁目錄 中使用二分法快速定位到對應的槽&#xff0c;然后再遍歷該槽對應分組中的記錄即可快速找到指定的記錄。 (2). 以其他列作為搜索條件 這種情況下只能從 最小記錄 開始依次遍歷單鏈表中的每條記錄&am…

值得收藏的練習打字網站

本文對一些好用的練習打字的網站進行了匯總整理&#xff0c;方便大家使用 一&#xff1a;程序猿練習打字&#xff1a; 1.Typing Practice for Programmers http://Typing.io 是程序員的打字導師。它的練習課程基于開源代碼&#xff0c;讓你在不斷的練習中提升自己的碼字速度…

Python:核心知識點整理大全15-筆記

目錄 ?編輯 7.3.2 刪除包含特定值的所有列表元素 pets.py 7.3.3 使用用戶輸入來填充字典 mountain_poll.py 7.4 小結 第8章 函 數 8.1 定義函數 greeter.py 8.1.1 向函數傳遞信息 8.1.2 實參和形參 8.2.1 位置實參 2. 位置實參的順序很重要 8.2.2 關鍵字實參 往…

Ansible通過kubernetes.core.k8s_info和kubernetes.core.k8s訪問OCP

文章目錄 環境OCPClient&#xff08;Ansible控制節點&#xff09; 步驟準備工作在client端配置ssh免密登錄OCP端在client端安裝Ansible kubernetes.core.k8s_info第1次嘗試在OCP端安裝python和pip3在OCP端安裝kubernetes在OCP端安裝PyYAML第2次嘗試在OCP端配置config文件第3次嘗…

計算機循環神經網絡(RNN)

計算機循環神經網絡&#xff08;RNN&#xff09; 一、引言 循環神經網絡&#xff08;RNN&#xff09;是一種常見的深度學習模型&#xff0c;適用于處理序列數據&#xff0c;如文本、語音、時間序列等。RNN通過捕捉序列數據中的時間依賴關系和上下文信息&#xff0c;能夠解決很…

react Hooks之useId

當我們在編寫React組件時&#xff0c;有時需要為元素生成唯一的ID。這種情況經常出現在表單元素、標簽和用于無障礙性的目的上。React提供了一個名為useId的自定義Hook&#xff0c;它可以幫助我們生成唯一的ID。 1、作用&#xff1a; 用于生成一個唯一的 ID。這個 ID 可以用于…

CLIP的升級版Alpha-CLIP:區域感知創新與精細控制

為了增強CLIP在圖像理解和編輯方面的能力&#xff0c;上海交通大學、復旦大學、香港中文大學、上海人工智能實驗室、澳門大學以及MThreads Inc.等知名機構共同合作推出了Alpha-CLIP。這一創新性的突破旨在克服CLIP的局限性&#xff0c;通過賦予其識別特定區域&#xff08;由點、…

Could not resolve all dependencies for configuration ‘:app:androidApis‘.

android studio出現Could not resolve all dependencies for configuration ‘:app:androidApis’. 試過很多種方法&#xff0c;但是都不好使&#xff0c;不管怎么樣都是提示如下報錯&#xff1a; Using insecure protocols with repositories, without explicit opt-in, is un…

丹麥市場開發攻略,帶你走進童話王國

說起安徒生&#xff0c;大家多多少少都知道&#xff0c;因為小時候讀的安徒生童話書真的太有名了&#xff0c;但是大家可能不知道安徒生是丹麥的。丹麥是高度發達的國家&#xff0c;奉行自由貿易政策&#xff0c;市場潛力是非常不錯的&#xff0c;而且中國是丹麥非常重要的貿易…

Python部分基礎知識入門學習,十分鐘快速上手

文章目錄 一、基礎語法二、變量類型三、運算符四、條件語句關于Python技術儲備一、Python所有方向的學習路線二、Python基礎學習視頻三、精品Python學習書籍四、Python工具包項目源碼合集①Python工具包②Python實戰案例③Python小游戲源碼五、面試資料六、Python兼職渠道 一、…

這家消金公司業務調整,暫停合作產品貸款服務

來源 | 鐳射財經&#xff08;leishecaijing&#xff09; 曾為金美信重要的線上自營渠道之一&#xff0c;錢多美宣告謝幕。 「鐳射財經」注意到&#xff0c;金美信消費金融近期發布一則關于錢多美的業務調整公告&#xff0c;提及2023年12月15日起&#xff0c;旗下“錢多美App”…

初識 WebGPU 以及遇到 WebGPU not supported 錯誤的解決方法

初識 WebGPU 以及遇到 WebGPU not supported 錯誤的解決方法 WebGPU學習資源初識WebGPU遇到并解決問題在線示例 因公司需求&#xff0c;開始接觸 WebGPU&#xff0c;偶然遇到問題&#xff0c;網上搜索無效&#xff0c;后來通過逐步判斷&#xff0c;終于定位到問題&#xff0c;這…

【WPF 按鈕點擊后異步上傳多文件code示例】

前言: WPF中按鈕點擊事件如何執行時間太長會導致整個UI線程卡頓&#xff0c;現象就是頁面刷新卡住&#xff0c;點擊其他按鈕無反饋。如下是進行異步執行命令&#xff0c;并遠程上傳文件的代碼。 ![異步上傳文件](https://img-blog.csdnimg.cn/direct/20c071929b004dcf9223dee2…

聽我的,日志還是得好好打!

日志這東西&#xff0c;平時看不出來什么&#xff0c;真要出了問題&#xff0c;那就是救命的稻草。這期就給大家分享一些日志相關的東西。 弄懂日志 SpringBoot項目啟動日志 什么是日志&#xff1f; 日志&#xff0c;維基百科中對其的定義是一個或多個由服務器自動創建和維護…

【數學建模】《實戰數學建模:例題與講解》第十一講-因子分析、聚類與主成分(含Matlab代碼)

【數學建模】《實戰數學建模&#xff1a;例題與講解》第十一講-因子分析、聚類與主成分&#xff08;含Matlab代碼&#xff09; 基本概念聚類分析Q型聚類分析R型聚類分析 主成分分析因子分析 習題10.11. 題目要求2.解題過程3.程序4.結果 習題10.21. 題目要求2.解題過程3.程序4.結…

Java網絡編程——安全網絡通信

在網絡上&#xff0c;信息在由源主機到目標主機的傳輸過程中會經過其他計算機。在一般情況下&#xff0c;中間的計算機不會監聽路過的信息。但在使用網上銀行或者進行信用卡交易時&#xff0c;網絡上的信息有可能被非法分子監聽&#xff0c;從而導致個人隱私的泄露。由于Intern…

request、limit資源配額

cpu/mem 的limit和request都是針對container來講的&#xff0c;不是針對pod。 0 < request < limit cpu cpu資源限制的單位m&#xff1a;CPU的計量單位叫毫核(m)。一個節點的CPU核心數量乘以1000&#xff0c;得到的就是節點總的CPU總數量。如&#xff0c;一個節點有兩個…

Rust做一個圖片服務器有多難?

今天我們將詳細探討如何使用Rust構建一個圖片服務器。Rust以其性能、安全性和并發處理能力而聞名&#xff0c;非常適合用于構建網絡服務。 一個圖片服務器需要處理圖片的上傳、存儲、訪問和處理&#xff0c;同時還要考慮安全性和性能。讓我們一步步了解如何用Rust來實現這一目…

使用kubeadm搭建高可用的K8s集群

—————————————————————————————————————————————— 博主介紹&#xff1a;Java領域優質創作者,博客之星城市賽道TOP20、專注于前端流行技術框架、Java后端技術領域、項目實戰運維以及GIS地理信息領域。 &#x1f345;文末獲取源碼…