設(shè)計(jì)背景:
Verilog語法中很多情況都用到了串并轉(zhuǎn)化的思想,旨在與提升運(yùn)算和芯片運(yùn)行的速度,串行轉(zhuǎn)并行已經(jīng)成為設(shè)計(jì)中不可缺少的一種思維。
設(shè)計(jì)原理:
本次的設(shè)計(jì)主設(shè)計(jì)一個(gè)8位的串并轉(zhuǎn)化,意思就是當(dāng)輸入8個(gè)數(shù)據(jù)的時(shí)候,我們把這8個(gè)串行數(shù)據(jù)轉(zhuǎn)化為8位的并行數(shù)據(jù)然后輸出出來。也就是需要一個(gè)8位的寄存器,來一個(gè)數(shù)據(jù)存到對(duì)應(yīng)的位上,然后輸出出來就完成了本次設(shè)計(jì)。
設(shè)計(jì)架構(gòu)圖:
設(shè)計(jì)代碼:
設(shè)計(jì)模塊
0modulestudy(clk,rst_n,data,data_out);//端口列表
1
2 inputclk,rst_n;//時(shí)鐘,復(fù)位輸入
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)//時(shí)序邏輯
11 if(!rst_n)
12 begin
13 data_out <=0;
14 temp <=0;
15 count <=0;
16 end
17 elseif(count <8)//計(jì)數(shù)表示只接8個(gè)數(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
測(cè)試模塊
0`timescale1ns/1ps//時(shí)標(biāo)
1
2moduletb();
3
4 regclk,rst_n;
5 regdata;
6
7 wire[7:0]data_out;
8
9 study study_dut(//設(shè)計(jì)例化
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;//復(fù)位
19 data =0;
20 #200rst_n =1;//不復(fù)位
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;//模擬晶振時(shí)鐘
35
36endmodule
仿真圖:
在測(cè)試中模擬數(shù)據(jù)輸入時(shí)1010 0101,然后輸出是一個(gè)并行數(shù)據(jù),那么通過看仿真時(shí)序,清楚的看到輸出是8位的并行數(shù)據(jù),本次設(shè)計(jì)正確.
同樣大家可以自己推理設(shè)計(jì)出并轉(zhuǎn)串的邏輯電路來。
-
FPGA
+關(guān)注
關(guān)注
1624文章
21573瀏覽量
600654 -
串并轉(zhuǎn)換
+關(guān)注
關(guān)注
0文章
3瀏覽量
7811
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論