2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  集成電路設(shè)計(jì)</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  題 目: E1數(shù)據(jù)存儲(chǔ)和讀取 </p><p>  院 系: 電子工程學(xué)院 </p><p>  專業(yè)班級(jí): </p><p&g

2、t;  學(xué) 號(hào): </p><p>  姓 名: </p><p>  導(dǎo)師姓名: </p><p>  報(bào)告日期: </p><p><b>  設(shè)計(jì)概述</b></p><p><b>  E1數(shù)據(jù)存儲(chǔ)和讀取</b>

3、</p><p><b>  設(shè)計(jì)任務(wù)</b></p><p>  本設(shè)計(jì)用電路實(shí)現(xiàn)把輸入的E1數(shù)據(jù)碼流0到31數(shù)據(jù)順序?qū)懭腚p口RAM中,以字節(jié)的形式輸入,時(shí)鐘頻率為256KHz,并以0到31循環(huán)寫,然后把數(shù)據(jù)分為4組,即:</p><p>  0 4 8 12 16 20 24 28</p><p> 

4、 1 5 9 13 17 21 25 29</p><p>  2 6 10 14 18 22 26 30</p><p>  3 7 11 15 19 23 27 31</p><p>  每組以64KHz頻率按31到0的順序均勻循環(huán)連續(xù)輸出。</p><p><b>  設(shè)計(jì)目的<

5、;/b></p><p>  本設(shè)計(jì)主要實(shí)現(xiàn)E1數(shù)據(jù)的存儲(chǔ)和讀取,實(shí)現(xiàn)通信系統(tǒng)中數(shù)據(jù)的轉(zhuǎn)換和傳輸。這里我們只涉及到一路的E1數(shù)據(jù)流。</p><p><b>  使用軟件及環(huán)境設(shè)備</b></p><p>  本設(shè)計(jì)主要在windows環(huán)境下實(shí)現(xiàn)詳細(xì)設(shè)計(jì),在lniux環(huán)境下實(shí)現(xiàn)仿真,綜合和STA。使用的軟件如下</p>&l

6、t;p>  1)Modelsim6.1 實(shí)現(xiàn)Verilog HDL語(yǔ)言的設(shè)計(jì)和仿真。</p><p>  2)Synopsys公司的軟件有:</p><p>  NC-Verilog 實(shí)現(xiàn)功能仿真和時(shí)序仿真;</p><p><b>  DC實(shí)現(xiàn)邏輯綜合;</b></p><p>  PT實(shí)現(xiàn)靜態(tài)時(shí)序分析。<

7、/p><p><b>  設(shè)計(jì)方案 </b></p><p>  本設(shè)計(jì)要求完成E1數(shù)據(jù)的存儲(chǔ)和讀取。根據(jù)要求,我們繪出頂層框圖。</p><p><b>  圖17 頂層框圖</b></p><p>  表9 top引腳定義</p><p><b>  設(shè)計(jì)定義 &l

8、t;/b></p><p>  根據(jù)設(shè)計(jì)需求,本設(shè)計(jì)共分為:</p><p>  時(shí)鐘模塊(div):用來(lái)提供整個(gè)系統(tǒng)中的各種時(shí)鐘信號(hào);</p><p>  數(shù)據(jù)轉(zhuǎn)換模塊(data_change):將串行數(shù)據(jù)轉(zhuǎn)換為8位的并行數(shù)據(jù),便于存儲(chǔ)了轉(zhuǎn)發(fā);</p><p>  雙口RAM模塊(ram_double):用來(lái)存儲(chǔ)數(shù)據(jù)流中的數(shù)據(jù),雙口R

9、AM便于存儲(chǔ)和讀取,此處我們?cè)O(shè)計(jì)的RAM的讀寫使用的是一個(gè)時(shí)鐘,即同步的RAM;</p><p>  讀地址模塊(rd_add):用來(lái)提供讀取數(shù)據(jù)的地址,從RAM中讀出要輸出的數(shù)據(jù);</p><p>  寫地址模塊(wr_add):用來(lái)產(chǎn)生存儲(chǔ)到RAM的地址;</p><p>  數(shù)據(jù)選擇模塊(choice):用來(lái)產(chǎn)生分組信息,將相應(yīng)的數(shù)據(jù)按要求存放到相應(yīng)的FIFO

10、中;</p><p>  FIFO模塊:將數(shù)據(jù)存儲(chǔ)按要求分為四組,F(xiàn)IFO用來(lái)存儲(chǔ)這四組數(shù)據(jù);</p><p>  比較輸出模塊(compare):將FIFO中的數(shù)據(jù)按照要求順序輸出。</p><p><b>  共八個(gè)模塊。</b></p><p>  模塊結(jié)構(gòu)關(guān)系如下圖所示:</p><p>

11、  3.1分頻模塊(div)</p><p>  功能描述:本模塊完成系統(tǒng)時(shí)鐘(4096MHz)的分頻,分別產(chǎn)生2048MHz,512MHz,256MHz的時(shí)鐘。</p><p><b>  電路設(shè)計(jì)框圖:</b></p><p><b>  圖1 分頻模塊框圖</b></p><p><b&

12、gt;  引腳定義:</b></p><p>  表1 分頻模塊引腳定義</p><p><b>  時(shí)序圖</b></p><p>  圖2 分頻模塊時(shí)序圖</p><p>  3.2數(shù)據(jù)轉(zhuǎn)換模塊(data_change)</p><p>  功能描述:本模塊實(shí)現(xiàn)把一位的二進(jìn)制數(shù)轉(zhuǎn)換

13、成八位的二進(jìn)制數(shù)。當(dāng)sign信號(hào)有效時(shí),讀出數(shù)據(jù)。</p><p><b>  電路設(shè)計(jì)框圖:</b></p><p>  圖3 數(shù)據(jù)轉(zhuǎn)換模塊框圖</p><p><b>  引腳定義:</b></p><p>  表2 數(shù)據(jù)轉(zhuǎn)換模塊引腳定義</p><p><b>

14、;  時(shí)序圖:</b></p><p>  圖4 數(shù)據(jù)轉(zhuǎn)換模塊時(shí)序圖</p><p>  3.3雙口RAM模塊(ram_double)</p><p>  功能描述:本模塊實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)和讀取。</p><p><b>  電路設(shè)計(jì)框圖:</b></p><p>  圖5 RAM模塊框

15、圖</p><p><b>  引腳定義:</b></p><p>  表3 RAM模塊引腳定義</p><p><b>  時(shí)序圖:</b></p><p>  圖6 RAM模塊時(shí)序圖</p><p>  3.4讀地址模塊(Rd_add)</p><p&

16、gt;  功能描述:本模塊實(shí)現(xiàn)對(duì)ram_double模塊讀數(shù)據(jù)的地址的操作。</p><p><b>  電路設(shè)計(jì)框圖:</b></p><p>  圖7 rd_add模塊框圖</p><p>  表4 引腳定義:表7 rd_add模塊引腳定義</p><p><b>  時(shí)序圖:</b></

17、p><p>  圖8 rd_add模塊時(shí)序圖</p><p>  3.5寫地址模塊(wr_add)</p><p>  功能描述:本模塊實(shí)現(xiàn)對(duì)ram_double模塊寫數(shù)據(jù)的地址的操作。</p><p><b>  電路設(shè)計(jì)框圖:</b></p><p>  圖9 wr_add模塊框圖</p&g

18、t;<p><b>  引腳定義:</b></p><p>  表5 wr_add模塊引腳定義</p><p><b>  時(shí)序圖:</b></p><p>  圖10 wr_add模塊時(shí)序圖</p><p>  3.6數(shù)據(jù)選擇模塊(choice)</p><p&g

19、t;  功能描述:本模塊實(shí)現(xiàn)對(duì)ram讀出的數(shù)據(jù)進(jìn)行分別存儲(chǔ)到四個(gè)FIFO(0-3)里,以便并行輸出。</p><p><b>  電路設(shè)計(jì)框圖:</b></p><p>  圖11 choice模塊框圖</p><p><b>  引腳定義:</b></p><p>  表6 choice模塊引腳定

20、義</p><p><b>  時(shí)序圖:</b></p><p>  圖12 choice模塊時(shí)序圖</p><p>  3.7 FIFO模塊</p><p>  功能描述:本模塊實(shí)現(xiàn)數(shù)據(jù)的緩存功能功能。</p><p><b>  電路設(shè)計(jì)框圖:</b></p>

21、<p>  圖 13 FIFO模塊框圖</p><p><b>  引腳定義:</b></p><p>  表7 FIFO模塊引腳定義</p><p><b>  時(shí)序圖:</b></p><p>  圖 14 FIFO模塊時(shí)序圖</p><p>  3.8比

22、較輸出模塊(compare)</p><p>  功能描述:本模塊實(shí)現(xiàn)四組數(shù)據(jù)的輸出。每組以64KHz頻率按31到0的順序均勻循環(huán)連續(xù)輸出。</p><p><b>  電路設(shè)計(jì)框圖:</b></p><p>  圖15 compare模塊框圖</p><p><b>  引腳定義:</b><

23、/p><p>  表8 compare模塊引腳定義</p><p><b>  時(shí)序圖:</b></p><p>  圖16 compare模塊時(shí)序圖</p><p><b>  綜合電路圖</b></p><p><b>  設(shè)計(jì)流程及結(jié)果</b><

24、/p><p><b>  5.1設(shè)計(jì)輸入</b></p><p>  電路設(shè)計(jì),頂層、各子模塊的設(shè)計(jì)源代碼</p><p><b>  1)頂層設(shè)計(jì)代碼:</b></p><p>  module information(clk,rst,data_E1,data_out);</p><

25、;p>  input clk;</p><p>  input rst;</p><p>  input data_E1;</p><p>  output[7:0]data_out;</p><p>  wire clk_2048,clk_256,clk_512;</p><p>  wire[5:0] rda

26、ddress;</p><p>  wire wren;</p><p>  wire[5:0] wraddress;</p><p>  wire[7:0] data_change;</p><p>  wire[3:0]full;</p><p>  wire[3:0]flag;</p><p&

27、gt;  wire[7:0]data0,data1,data2,data3;</p><p>  wire[3:0]empty;</p><p>  wire[7:0]data_out0,data_out1,data_out2,data_out3;</p><p>  wire[7:0]data_ram;</p><p>  div

28、mydiv(.clk(clk),.rst(rst),.clk_2048(clk_2048),</p><p>  .clk_256(clk_256),.clk_512(clk_512));</p><p>  rd_add myrd_add(.clk(clk_2048),.rst(rst),</p><p>  .rd_add(rdaddress),.rden(wr

29、en));</p><p>  wr_add mywr_add(.clk(clk_2048),.rst(rst),</p><p>  .wren(wren), .wr_add(wraddress));</p><p>  data_change mydata_change(.data(data_E1), .clk(clk),.rst(rst),</p>

30、<p>  .data_out(data_change),.sign(wren));</p><p>  choice mychoice(.clk(clk_256),.rst(rst),.flag(flag),</p><p>  .data_in(data_ram),.rdaddress(rdaddress),</p><p>  .data0(da

31、ta0),.data1(data1),.data2(data2),</p><p>  .data3(data3),.full(full),.rden(wren));</p><p>  compare mycompare(.clk(clk_256),.rst(rst),.flag(flag[0]),</p><p>  .data_in0(data_out0),.

32、data_in1(data_out1),</p><p>  .data_in2(data_out2),.data_in3(data_out3),</p><p>  .data_out(data_out));</p><p>  fifo123 myfifo0(.clk(clk_512),.data_in(data0),.rdreq(flag[0]),</p

33、><p>  .wrreq(flag[0]),.empty(empty[0]), .full(full[0]),</p><p>  .data_out(data_out0),.rst(rst));</p><p>  fifo123 myfifo1(.clk(clk_512), .data_in(data1),.rdreq(flag[0]),</p>&

34、lt;p>  .wrreq(flag[1]),.empty(empty[1]),.full(full[1]),</p><p>  .data_out(data_out1),.rst(rst));</p><p>  fifo123 myfifo2(.clk(clk_512),.data_in(data2),.rdreq(flag[0]),</p><p> 

35、 .wrreq(flag[2]),.empty(empty[2]),.full(full[2]),</p><p>  .data_out(data_out2),.rst(rst));</p><p>  fifo123 myfifo3(.clk(clk_512),.data_in(data3),.rdreq(flag[0]),</p><p>  .wrreq(f

36、lag[3]),.empty(empty[3]),.full(full[3]),</p><p>  .data_out(data_out3),.rst(rst));</p><p>  ram_double2 myram_double(.clock_wr(clk_2048),.clock_rd(clk_2048),</p><p>  .data(data_cha

37、nge),.rdaddress(rdaddress),</p><p>  .wraddress(wraddress),.wren(wren),</p><p>  .q(data_ram));</p><p><b>  Endmodule</b></p><p><b>  2)個(gè)子模塊代碼:</b&

38、gt;</p><p>  module choice(clk,rst, data_in,rdaddress,data0,data1,data2,data3,flag,full,rden);</p><p>  input rden;</p><p>  input[7:0] data_in;</p><p>  input[5:0] rda

39、ddress;</p><p>  input clk,rst;</p><p>  input[3:0] full;</p><p>  output reg[3:0] flag;</p><p>  output reg[7:0] data0,data1,data2,data3;</p><p>  wire [5

40、:0]rd_add;</p><p>  assign rd_add = rdaddress + 1'b1;</p><p>  always@(posedge clk or negedge rst)begin</p><p>  if(!rst)begin</p><p>  flag <= 4'b0;</p&g

41、t;<p>  data0 <= 8'd0;</p><p>  data1 <= 8'd0;</p><p>  data2 <= 8'b0;</p><p>  data3 <= 8'b0;</p><p><b>  end</b></p&

42、gt;<p>  else begin</p><p>  case(rd_add[1:0])</p><p>  2'b00:begin</p><p>  if(!full[0])begin</p><p>  flag <= 4'b0001;</p><p>  data0 &

43、lt;= data_in;</p><p><b>  end</b></p><p>  else data0 <= data0;</p><p><b>  end</b></p><p>  2'b01:begin</p><p>  if(!ful

44、l[1])begin</p><p>  flag <= 4'b0010;</p><p>  data1 <= data_in;</p><p><b>  end</b></p><p>  else data1 <= data1;</p><p><b>

45、  end</b></p><p>  2'b10:begin</p><p>  if(!full[2])begin</p><p>  flag <= 4'b0100;</p><p>  data2 <= data_in;</p><p><b>  end<

46、;/b></p><p>  else data2 <= data2;</p><p><b>  end</b></p><p>  2'b11:begin</p><p>  if(!full[3])begin</p><p>  flag <= 4'b100

47、0;</p><p>  data3 <= data_in;</p><p><b>  end</b></p><p>  else data3 <= data3;</p><p><b>  end</b></p><p>  default:begin<

48、;/p><p>  flag <= 4'b0;</p><p><b>  end</b></p><p><b>  endcase</b></p><p><b>  end</b></p><p><b>  end</b

49、></p><p><b>  endmodule</b></p><p>  module compare(clk,rst,flag,data_in0,data_in1,data_in2,data_in3,data_out);</p><p>  input clk;</p><p>  input flag;&

50、lt;/p><p>  input rst;</p><p>  input[7:0] data_in0,data_in1,data_in2,data_in3;</p><p>  output reg[7:0] data_out;</p><p>  reg [7:0]ram[3:0];</p><p>  always

51、@(posedge clk or negedge rst)begin</p><p>  if(!rst)begin</p><p>  ram[3] <= 8'b0;</p><p>  ram[2] <= 8'b0;</p><p>  ram[1] <= 8'b0;</p><

52、;p>  ram[0] <= 8'b0;</p><p><b>  end</b></p><p>  else begin</p><p>  if(flag == 1'b1)begin</p><p>  ram[3] <= data_in3;</p><p&g

53、t;  ram[2] <= data_in2;</p><p>  ram[1] <= data_in1;</p><p>  ram[0] <= data_in0;</p><p><b>  end</b></p><p>  else begin</p><p>  ram

54、[3] <= ram[3];</p><p>  ram[2] <= ram[2];</p><p>  ram[1] <= ram[1];</p><p>  ram[0] <= ram[0];</p><p><b>  end</b></p><p><b>

55、;  end</b></p><p><b>  end</b></p><p>  reg [1:0]counter;</p><p>  always@(posedge clk or negedge rst)begin</p><p>  if(!rst)begin</p><p&

56、gt;  data_out <= 8'b0;</p><p>  counter <= 2'd1;</p><p><b>  end</b></p><p>  else begin</p><p>  counter <= counter - 1'b1;</p>

57、<p>  data_out <= ram[counter];</p><p><b>  end</b></p><p><b>  end</b></p><p><b>  endmodule</b></p><p>  module data_cha

58、nge(data,clk,rst,data_out,sign);</p><p>  input clk,rst,data;</p><p>  output reg[7:0] data_out;</p><p>  output sign;</p><p>  reg[2:0] count;</p><p><

59、b>  reg sign;</b></p><p>  always @(posedge clk or negedge rst)</p><p><b>  begin</b></p><p>  if(!rst) </p><p><b>  begin</b></p&

60、gt;<p>  count <= 3'b000;</p><p>  sign <= 1'b0;</p><p><b>  end</b></p><p><b>  else</b></p><p><b>  begin</b>

61、</p><p>  count <= count + 3'b001;</p><p>  if(count == 3'b111)</p><p><b>  begin</b></p><p>  sign <= 1'b1;</p><p>  count &

62、lt;= 3'b000;</p><p><b>  end</b></p><p><b>  else</b></p><p>  sign <= 1'b0;</p><p><b>  end</b></p><p>

63、;<b>  end</b></p><p>  always @(posedge clk or negedge rst)begin</p><p>  if(!rst)begin</p><p>  data_out <= 8'b0;</p><p><b>  end</b><

64、;/p><p>  else begin</p><p>  data_out[0] <= data;</p><p>  data_out[7:1] <= data_out[6:0];</p><p><b>  end</b></p><p><b>  end</

65、b></p><p>  endmodule </p><p>  module div(clk,rst,clk_2048,clk_256,clk_512);</p><p>  input clk;</p><p>  input rst;</p><p>  output reg clk_2048;</

66、p><p>  output reg clk_256;</p><p>  output reg clk_512;</p><p>  reg[1:0] counter_8;</p><p>  reg[2:0] counter_16;</p><p>  always@(posedge clk or negedge rs

67、t)begin</p><p>  if(!rst)begin</p><p>  counter_8 <= 3'b0;</p><p>  clk_512 <= 1'b0;</p><p><b>  end</b></p><p>  else begin</

68、p><p>  counter_8 <= counter_8 + 1'b1;</p><p>  if(counter_8 == 2'd3)begin</p><p>  clk_512 <= ~clk_512;</p><p>  counter_8 <= 3'b0;</p><p&

69、gt;<b>  end</b></p><p><b>  end</b></p><p><b>  end</b></p><p>  always@(posedge clk or negedge rst)begin</p><p>  if(!rst)begin<

70、/p><p>  clk_2048 <= 1'b0;</p><p><b>  end</b></p><p>  else begin</p><p>  clk_2048 <= ~clk_2048;</p><p><b>  end</b></p

71、><p><b>  end</b></p><p>  always@(posedge clk or negedge rst)begin</p><p>  if(!rst)begin</p><p>  counter_16 <= 3'b0;</p><p>  clk_256 &l

72、t;= 1'b0;</p><p><b>  end</b></p><p>  else begin</p><p>  counter_16 <= counter_16 + 1'b1;</p><p>  if(counter_16 == 3'd7)begin</p>&

73、lt;p>  clk_256 <= ~clk_256;</p><p>  counter_16 <= 3'b0;</p><p><b>  end</b></p><p><b>  end</b></p><p><b>  end</b><

74、;/p><p><b>  endmodule</b></p><p>  module fifo123(clk,rst,empty,full,wrreq,rdreq,data_in,data_out);</p><p>  input clk;</p><p>  input rst;</p><p&g

75、t;  input wrreq;</p><p>  input rdreq;</p><p>  input [7:0]data_in;</p><p>  output wire empty;</p><p>  output wire full;</p><p>  output reg [7:0]data_ou

76、t;</p><p><b>  reg flag;</b></p><p>  reg [2:0]wrcnt;</p><p>  reg [2:0]rdcnt;</p><p>  reg [7:0]fifo[7:0];</p><p>  always@(posedge clk or neg

77、edge rst)begin</p><p>  if(!rst) begin</p><p>  rdcnt<=3'b0;</p><p>  wrcnt<=3'b0;</p><p>  data_out<=8'b0;</p><p>  flag<=1'b0

78、; </p><p><b>  end</b></p><p>  else case({wrreq,rdreq,full,empty})</p><p>  4'b1000: begin //write</p><p>  fifo[wrcnt]<=data_in;</p&g

79、t;<p>  wrcnt<=wrcnt+1;</p><p>  flag<=1'b1;</p><p><b>  end</b></p><p>  4'b1001:begin //write</p><p>  fifo[wrcnt]<=data_i

80、n;</p><p>  wrcnt<=wrcnt+1;</p><p>  flag<=1'b1;</p><p><b>  end</b></p><p>  4'b1101:begin //write</p><p>  fifo[wrcnt]&

81、lt;=data_in;</p><p>  wrcnt<=wrcnt+1;</p><p>  flag<=1'b1;</p><p><b>  end </b></p><p>  4'b0100:begin //read</p><p>  da

82、ta_out<=fifo[rdcnt]; </p><p>  rdcnt<=rdcnt+1;</p><p>  flag<=1'b0;</p><p><b>  end</b></p><p>  4'b0110:begin //read</p>

83、<p>  data_out<=fifo[rdcnt]; </p><p>  rdcnt<=rdcnt+1;</p><p>  flag<=1'b0;</p><p><b>  end</b></p><p>  4'b1110:begin //rea

84、d</p><p>  data_out<=fifo[rdcnt]; </p><p>  rdcnt<=rdcnt+1;</p><p>  flag<=1'b0;</p><p><b>  end</b></p><p>  4'b1100:begin

85、 //write and read</p><p>  fifo[wrcnt]<=data_in;</p><p>  wrcnt<=wrcnt+1;</p><p>  flag<=1'b1;</p><p>  data_out<=fifo[rdcnt]; </p><

86、p>  rdcnt<=rdcnt+1;</p><p>  flag<=1'b0;</p><p><b>  end</b></p><p>  default:begin</p><p>  wrcnt<=wrcnt;</p><p>  rdcnt<=r

87、dcnt;</p><p><b>  end</b></p><p><b>  endcase</b></p><p><b>  end</b></p><p>  assign full=(wrcnt==rdcnt)&flag;</p><p

88、>  assign empty=(wrcnt==rdcnt)&~flag;</p><p><b>  endmodule</b></p><p>  module ram_double2(clock_wr,clock_rd,data,rdaddress,wraddress,wren,q);</p><p>  input

89、 clock_wr;</p><p>  input clock_rd;</p><p>  input [7:0] data;</p><p>  input [5:0] rdaddress; </p><p>  input [5:0] wraddress;</p&

90、gt;<p>  input wren;</p><p>  output [7:0] q;</p><p>  wire clock_wr;</p><p>  wire clock_rd;</p><p>  wire [7:0] data;</p><p>  wire

91、 [5:0] rdaddress;</p><p>  wire [5:0] wraddress;</p><p>  wire wren;</p><p>  reg [7:0] q;</p><p>  reg [7:0] ram_double [63:0];</p><p>  alwa

92、ys @(posedge clock_wr) begin</p><p>  if(wren) ram_double[wraddress] <= data;</p><p>  else ram_double[wraddress] <= ram_double[wraddress];</p><p><b>  end</b><

93、;/p><p>  always @(posedge clock_rd)begin</p><p><b>  if(wren)</b></p><p>  q <= ram_double[rdaddress];</p><p>  else q <= q;</p><p><b&g

94、t;  end</b></p><p><b>  endmodule</b></p><p>  module rd_add(clk,rst,rd_add,rden);</p><p>  input clk;</p><p>  input rst;</p><p>  input

95、 rden;</p><p>  output reg[5:0] rd_add;</p><p>  always@(posedge clk or negedge rst)begin</p><p>  if(!rst)begin</p><p>  rd_add <= 6'd63; </p><p&g

96、t;<b>  end</b></p><p>  else begin</p><p><b>  if(rden)</b></p><p>  rd_add <= rd_add - 1'd1;</p><p>  else rd_add <= rd_add;</p>

97、;<p><b>  end</b></p><p><b>  end</b></p><p><b>  endmodule</b></p><p>  module wr_add(clk, rst,wren,wr_add);</p><p>  input

98、clk;</p><p>  input rst;</p><p>  input wren;</p><p>  output reg [5:0]wr_add;</p><p>  always @(posedge clk or negedge rst)begin</p><p>  if(!rst)begin &l

99、t;/p><p>  wr_add <= 6'b0;</p><p><b>  end </b></p><p>  else if(wren == 1'b1)begin</p><p>  wr_add <= wr_add + 1'b1;</p><p>&l

100、t;b>  end</b></p><p>  else wr_add <= wr_add;</p><p><b>  end</b></p><p><b>  endmodule</b></p><p><b>  5.2設(shè)計(jì)仿真</b></

101、p><p><b>  1)仿真方案</b></p><p>  本設(shè)計(jì)我們采用分模塊設(shè)計(jì)分模塊驗(yàn)證的方法。針對(duì)每個(gè)模塊分別設(shè)計(jì)驗(yàn)證,分別寫驗(yàn)證代碼。如果每個(gè)模塊的都能通過(guò)驗(yàn)證,然后再把幾個(gè)模塊綜合起來(lái)一起驗(yàn)證。最后,再驗(yàn)證總體模塊。</p><p>  2)總體模塊及個(gè)模塊仿真激勵(lì)代碼,仿真結(jié)果以及結(jié)果的分析等;</p><p

102、>  div模塊驗(yàn)證代碼:</p><p>  module test_div;</p><p><b>  reg clk;</b></p><p><b>  reg rst;</b></p><p>  wire clk_2048,clk_256;</p><p&

103、gt;  div mydiv(.clk(clk),.rst(rst),.clk_2048(clk_2048),.clk_256(clk_256));</p><p><b>  initial</b></p><p><b>  begin</b></p><p><b>  clk=1;</b>&l

104、t;/p><p><b>  rst=1'b0;</b></p><p>  #20 rst=1'b1;</p><p>  forever #10 clk=~clk; </p><p><b>  end</b></p><p><b>  endmo

105、dule</b></p><p><b>  仿真結(jié)果:</b></p><p>  圖18div模塊仿真圖</p><p><b>  結(jié)果分析:</b></p><p>  有上圖得知。仿真結(jié)果和我們?cè)O(shè)計(jì)時(shí)序符合。</p><p>  2、data_chang

106、e模塊驗(yàn)證代碼:</p><p>  module data_change_test;</p><p>  reg clk,rst,data;</p><p>  wire sign;</p><p>  wire[7:0] data_out;</p><p>  data_change A(.data(data),.

107、clk(clk), .rst(rst), .data_out(data_out), .sign(sign));</p><p>  always #5 clk <= ~clk; </p><p>  initial begin</p><p>  #0 clk = 1'b0;rst = 1'b0;data = 1

108、9;b0;</p><p>  #10 rst = 1'b1;data = 1'b1;</p><p>  #10 data = 1'b0; </p><p>  #10 data = 1'b1;</p><p>  #10 data = 1'b0; </p><p>  

109、#10 data = 1'b1;</p><p>  #10 data = 1'b0; </p><p>  #10 data = 1'b1;</p><p>  #10 data = 1'b0; </p><p>  #10 data = 1'b1;</p><p>

110、  #10 data = 1'b0; </p><p>  #10 data = 1'b1;</p><p>  end </p><p><b>  endmodule</b></p><p><b>  仿真結(jié)果:</b></p><p>

111、  圖19data_change模塊仿真圖 </p><p><b>  結(jié)果分析:</b></p><p>  有上圖得知。仿真結(jié)果和我們?cè)O(shè)計(jì)完全符合。</p><p>  rd_add模塊驗(yàn)證代碼:</p><p>  module rd_add_test;</p><p><b>

112、  reg clk;</b></p><p><b>  reg rst;</b></p><p><b>  reg rden;</b></p><p>  wire[5:0] rd_add;</p><p>  rd_add rd(.clk(clk),.rst(rst), .rd_

113、add(rd_add), .rden(rden));</p><p>  always #5 clk <= ~clk;</p><p>  initial begin</p><p>  #0 clk = 1'b0;</p><p>  #0 rst = 1'b0;</p><p>  rden

114、= 1'b0;</p><p>  #10 rst = 1'b1;</p><p>  #3 rden = 1'b1;</p><p>  #700 rden = 1'b0;</p><p><b>  end</b></p><p><b>  endm

115、odule</b></p><p><b>  仿真結(jié)果:</b></p><p>  圖20 rd_add模塊仿真圖</p><p><b>  結(jié)果分析:</b></p><p>  有上圖得知。仿真結(jié)果和我們?cè)O(shè)計(jì)完全符合。</p><p>  wr_add驗(yàn)

116、證代碼:</p><p>  module test_wr_add;</p><p><b>  reg clk;</b></p><p><b>  reg rst;</b></p><p><b>  reg wren;</b></p><p>  

117、wire[5:0] wr_add;</p><p>  wr_add wr(.clk(clk),.rst(rst), .wr_add(wr_add),.wren(wren));</p><p>  always #3 clk <= ~clk;</p><p>  initial begin</p><p>  #0 clk = 1

118、9;b0;</p><p>  #0 rst = 1'b0;</p><p>  #5 wren = 1'b1;</p><p>  #10 rst = 1'b1;</p><p>  #700 wren = 1'b0;</p><p><b>  end</b>&

119、lt;/p><p><b>  endmodule</b></p><p><b>  仿真結(jié)果:</b></p><p>  圖21 wr_add模塊仿真圖</p><p><b>  結(jié)果分析:</b></p><p>  有上圖得知。仿真結(jié)果和我們?cè)O(shè)計(jì)

120、完全符合。</p><p>  choice模塊仿真代碼:</p><p>  module test_choice;</p><p><b>  reg clk;</b></p><p><b>  reg rst;</b></p><p><b>  reg r

121、den;</b></p><p>  wire[5:0] rd_add;</p><p>  wire[3:0] flag;</p><p>  reg[3:0] full;</p><p>  reg[7:0] data_ram;</p><p>  wire[7:0] data0,data1,data

122、2,data3;</p><p>  rd_add rd(.clk(clk),.rst(rst),.rd_add(rd_add),.rden(rden));</p><p>  choice mychoice(.clk(clk),.rst(rst),.flag(flag),.data_in(data_ram),.rdaddress(rd_add),.data0(data0),</p&

123、gt;<p>  .data1(data1),.data2(data2),.data3(data3),.full(full),.rden(rden));</p><p>  always #3 data_ram = data_ram + 1'b1;</p><p>  always #3 clk = ~clk;</p><p>  initia

124、l begin</p><p>  #0 clk = 1'b0;</p><p>  data_ram = 8'b0;</p><p>  rst = 1'b0;</p><p>  full = 4'b0;</p><p>  rden = 1'b0;</p>&

125、lt;p>  #15 rst = 1'b1;</p><p>  #13 rden = 1'b1;</p><p>  #150 full = 4'b1111;</p><p><b>  end</b></p><p><b>  endmodule</b></

126、p><p><b>  仿真結(jié)果:</b></p><p>  圖22 choice模塊仿真圖</p><p><b>  結(jié)果分析:</b></p><p>  有上圖得知。仿真結(jié)果和我們?cè)O(shè)計(jì)完全符合。</p><p>  ram_double模塊仿真代碼:</p>

127、<p>  module ram_double2_test;</p><p>  reg clock; </p><p>  reg [7:0] data;</p><p>  reg [5:0] rdaddress;</p><p>  reg [5:0] wraddress;</p>

128、;<p>  reg wren;</p><p>  wire [7:0] q; </p><p>  ram_double2 R(.clock(clock), .data(data),.rdaddress(rdaddress), </p><p>  .wraddress(wraddress), .wren(wren),.q(q));&

129、lt;/p><p>  always #5 clock = ~clock; </p><p>  initial begin</p><p>  #0 clock = 1'b1;</p><p>  wren = 1'b0;</p><p>  rdaddress =

130、 6'd63;</p><p>  wraddress = 6'd0;</p><p>  data = 8'd5;</p><p>  #10 data = 8'd4;</p><p>  wren = 1'b1;</p><p>  wraddress = 6'd1;

131、</p><p>  #10 data = 8'd3;</p><p>  wraddress = 6'd2; </p><p>  rdaddress = 6'd1;</p><p>  #10 rdaddress = 6'd2; </p><p><b>  e

132、nd</b></p><p><b>  endmodule</b></p><p><b>  仿真結(jié)果:</b></p><p>  圖23 ram_double模塊仿真圖</p><p><b>  結(jié)果分析:</b></p><p>

133、  有上圖得知。仿真結(jié)果和我們?cè)O(shè)計(jì)完全符合。</p><p>  FIFO模塊仿真代碼:</p><p>  module fifo123_test;</p><p><b>  reg clk;</b></p><p><b>  reg rst;</b></p><p>

134、  reg wrreq;</p><p>  reg rdreq;</p><p>  reg [7:0]data_in;</p><p>  wire full;</p><p>  wire empty;</p><p>  wire [7:0]data_out;</p><p>  fif

135、o123 fifo(.clk(clk),.rst(rst),.full(full),.empty(empty),.wrreq(wrreq),</p><p>  .rdreq(rdreq),.data_in(data_in),.data_out(data_out));</p><p>  always #5 clk<=~clk;</p><p>  initi

136、al begin</p><p>  #0 clk=1'b0;rst=1'b1;wrreq=1'b0;rdreq=1'b0;data_in=8'b0;</p><p>  #5 rst=1'b0;</p><p>  #10 rst=1'b1;wrreq=1'b1;</p><p&g

137、t;  data_in=8'b10011011;</p><p>  #10 data_in=8'b11111100;</p><p>  #10 data_in=8'b01010010;</p><p>  #10 data_in=8'b11100010;</p><p>  #10 data_in=8

138、9;b00011100;</p><p>  #10 data_in=8'b01101100;</p><p>  #10 data_in=8'b10111110;</p><p>  #10 data_in=8'b01111101;</p><p>  #10 data_in=8'b11001000;<

139、/p><p>  #10 rdreq=1'b1;</p><p>  data_in=8'b00000011;</p><p>  #20 wrreq=1'b0;</p><p>  #80 rdreq=1'b0; </p><p><b>  end</b&g

140、t;</p><p><b>  endmodule</b></p><p><b>  仿真結(jié)果:</b></p><p>  圖24 FIFO模塊仿真圖</p><p><b>  結(jié)果分析:</b></p><p>  有上圖得知。仿真結(jié)果和我們?cè)O(shè)

141、計(jì)完全符合。</p><p>  8、compare模塊仿真代碼:</p><p>  module compare_tset;</p><p>  reg clk,flag;</p><p>  reg rst;</p><p>  reg [7:0] data_in0,data_in1,data_in2,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論