設計背景:
Verilog語法中很多情況都用到了串并轉化的思想,旨在與提升運算和芯片運行的速度,串行轉并行已經成為設計中不可缺少的一種思維。
設計原理:
本次的設計主設計一個8位的串并轉化,意思就是當輸入8個數據的時候,我們把這8個串行數據轉化為8位的并行數據然后輸出出來。也就是需要一個8位的寄存器,來一個數據存到對應的位上,然后輸出出來就完成了本次設計。
設計架構圖:
設計代碼:
設計模塊
0modulestudy(clk,rst_n,data,data_out);//端口列表
1
2 inputclk,rst_n;//時鐘,復位輸入
3 inputdata;//輸入數據
4
5 outputreg[7:0]data_out;
6
7 reg[3:0]count;
8 reg[7:0]temp;
9
10 always@(posedgeclk)//時序邏輯
11 if(!rst_n)
12 begin
13 data_out <=0;
14 temp <=0;
15 count <=0;
16 end
17 elseif(count <8)//計數表示只接8個數據
18 begin
19 temp <={temp[6:0],data};//移位寄存器
20 count <=count +1'b1;
21 end
22 else
23 begin
24 data_out <=temp;//接到后輸出
25 end
26
27endmodule
測試模塊
0`timescale1ns/1ps//時標
1
2moduletb();
3
4 regclk,rst_n;
5 regdata;
6
7 wire[7:0]data_out;
8
9 study study_dut(//設計例化
10 .clk(clk),
11 .rst_n(rst_n),
12 .data(data),
13 .data_out(data_out)
14 );
15
16 initialbegin
17 clk =1;
18 rst_n =0;//復位
19 data =0;
20 #200rst_n =1;//不復位
21 data =1;//模擬數據輸入
22 #20data =0;
23 #20data =1;
24 #20data =0;
25
26 #20data =0;
27 #20data =1;
28 #20data =0;
29 #20data =1;
30
31 #200$stop;
32 end
33
34 always#10clk =~clk;//模擬晶振時鐘
35
36endmodule
仿真圖:
在測試中模擬數據輸入時1010 0101,然后輸出是一個并行數據,那么通過看仿真時序,清楚的看到輸出是8位的并行數據,本次設計正確.
同樣大家可以自己推理設計出并轉串的邏輯電路來。
-
FPGA
+關注
關注
1630文章
21798瀏覽量
606065 -
串并轉換
+關注
關注
0文章
3瀏覽量
7853
發布評論請先 登錄
相關推薦
如何使用其gearbox功能來實現不同的比率的串并轉換功能
![如何使用其gearbox功能來實現不同的比率的<b class='flag-5'>串</b><b class='flag-5'>并轉換</b>功能](https://file.elecfans.com/web2/M00/1F/60/poYBAGGYHJSAOovLAAC1kSHzlQs418.png)
LVDS串并轉換與并串轉換設計
![LVDS<b class='flag-5'>串</b><b class='flag-5'>并轉換</b>與并<b class='flag-5'>串</b><b class='flag-5'>轉換</b>設計](https://file1.elecfans.com/web2/M00/AE/5D/wKgZomVHCJSAYHf9AAAKcXfVn8E487.jpg)
評論