設(shè)計背景:
Verilog語法中很多情況都用到了串并轉(zhuǎn)化的思想,旨在與提升運算和芯片運行的速度,串行轉(zhuǎn)并行已經(jīng)成為設(shè)計中不可缺少的一種思維。
設(shè)計原理:
本次的設(shè)計主設(shè)計一個8位的串并轉(zhuǎn)化,意思就是當輸入8個數(shù)據(jù)的時候,我們把這8個串行數(shù)據(jù)轉(zhuǎn)化為8位的并行數(shù)據(jù)然后輸出出來。也就是需要一個8位的寄存器,來一個數(shù)據(jù)存到對應的位上,然后輸出出來就完成了本次設(shè)計。
設(shè)計架構(gòu)圖:
設(shè)計代碼:
設(shè)計模塊
0modulestudy(clk,rst_n,data,data_out);//端口列表
1
2 inputclk,rst_n;//時鐘,復位輸入
3 inputdata;//輸入數(shù)據(jù)
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)//計數(shù)表示只接8個數(shù)據(jù)
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(//設(shè)計例化
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;//模擬數(shù)據(jù)輸入
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
仿真圖:
在測試中模擬數(shù)據(jù)輸入時1010 0101,然后輸出是一個并行數(shù)據(jù),那么通過看仿真時序,清楚的看到輸出是8位的并行數(shù)據(jù),本次設(shè)計正確.
同樣大家可以自己推理設(shè)計出并轉(zhuǎn)串的邏輯電路來。
-
FPGA
+關(guān)注
關(guān)注
1625文章
21625瀏覽量
601245 -
串并轉(zhuǎn)換
+關(guān)注
關(guān)注
0文章
3瀏覽量
7814
發(fā)布評論請先 登錄
相關(guān)推薦
評論