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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  集成電路設計</b></p><p><b>  課程設計報告</b></p><p>  題 目: E1數據存儲和讀取 </p><p>  院 系: 電子工程學院 </p><p>  專業(yè)班級: </p><p&g

2、t;  學 號: </p><p>  姓 名: </p><p>  導師姓名: </p><p>  報告日期: </p><p><b>  設計概述</b></p><p><b>  E1數據存儲和讀取</b>

3、</p><p><b>  設計任務</b></p><p>  本設計用電路實現把輸入的E1數據碼流0到31數據順序寫入雙口RAM中,以字節(jié)的形式輸入,時鐘頻率為256KHz,并以0到31循環(huán)寫,然后把數據分為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>  設計目的<

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

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

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

8、t;/b></p><p>  根據設計需求,本設計共分為:</p><p>  時鐘模塊(div):用來提供整個系統(tǒng)中的各種時鐘信號;</p><p>  數據轉換模塊(data_change):將串行數據轉換為8位的并行數據,便于存儲了轉發(fā);</p><p>  雙口RAM模塊(ram_double):用來存儲數據流中的數據,雙口R

9、AM便于存儲和讀取,此處我們設計的RAM的讀寫使用的是一個時鐘,即同步的RAM;</p><p>  讀地址模塊(rd_add):用來提供讀取數據的地址,從RAM中讀出要輸出的數據;</p><p>  寫地址模塊(wr_add):用來產生存儲到RAM的地址;</p><p>  數據選擇模塊(choice):用來產生分組信息,將相應的數據按要求存放到相應的FIFO

10、中;</p><p>  FIFO模塊:將數據存儲按要求分為四組,FIFO用來存儲這四組數據;</p><p>  比較輸出模塊(compare):將FIFO中的數據按照要求順序輸出。</p><p><b>  共八個模塊。</b></p><p>  模塊結構關系如下圖所示:</p><p>

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

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

13、成八位的二進制數。當sign信號有效時,讀出數據。</p><p><b>  電路設計框圖:</b></p><p>  圖3 數據轉換模塊框圖</p><p><b>  引腳定義:</b></p><p>  表2 數據轉換模塊引腳定義</p><p><b>

14、;  時序圖:</b></p><p>  圖4 數據轉換模塊時序圖</p><p>  3.3雙口RAM模塊(ram_double)</p><p>  功能描述:本模塊實現數據存儲和讀取。</p><p><b>  電路設計框圖:</b></p><p>  圖5 RAM模塊框

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

16、gt;  功能描述:本模塊實現對ram_double模塊讀數據的地址的操作。</p><p><b>  電路設計框圖:</b></p><p>  圖7 rd_add模塊框圖</p><p>  表4 引腳定義:表7 rd_add模塊引腳定義</p><p><b>  時序圖:</b></

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

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

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

20、義</p><p><b>  時序圖:</b></p><p>  圖12 choice模塊時序圖</p><p>  3.7 FIFO模塊</p><p>  功能描述:本模塊實現數據的緩存功能功能。</p><p><b>  電路設計框圖:</b></p>

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

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

23、/p><p>  表8 compare模塊引腳定義</p><p><b>  時序圖:</b></p><p>  圖16 compare模塊時序圖</p><p><b>  綜合電路圖</b></p><p><b>  設計流程及結果</b><

24、/p><p><b>  5.1設計輸入</b></p><p>  電路設計,頂層、各子模塊的設計源代碼</p><p><b>  1)頂層設計代碼:</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)個子模塊代碼:</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設計仿真</b></

101、p><p><b>  1)仿真方案</b></p><p>  本設計我們采用分模塊設計分模塊驗證的方法。針對每個模塊分別設計驗證,分別寫驗證代碼。如果每個模塊的都能通過驗證,然后再把幾個模塊綜合起來一起驗證。最后,再驗證總體模塊。</p><p>  2)總體模塊及個模塊仿真激勵代碼,仿真結果以及結果的分析等;</p><p

102、>  div模塊驗證代碼:</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>  仿真結果:</b></p><p>  圖18div模塊仿真圖</p><p><b>  結果分析:</b></p><p>  有上圖得知。仿真結果和我們設計時序符合。</p><p>  2、data_chang

106、e模塊驗證代碼:</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>  仿真結果:</b></p><p>

111、  圖19data_change模塊仿真圖 </p><p><b>  結果分析:</b></p><p>  有上圖得知。仿真結果和我們設計完全符合。</p><p>  rd_add模塊驗證代碼:</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>  仿真結果:</b></p><p>  圖20 rd_add模塊仿真圖</p><p><b>  結果分析:</b></p><p>  有上圖得知。仿真結果和我們設計完全符合。</p><p>  wr_add驗

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>  仿真結果:</b></p><p>  圖21 wr_add模塊仿真圖</p><p><b>  結果分析:</b></p><p>  有上圖得知。仿真結果和我們設計

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>  仿真結果:</b></p><p>  圖22 choice模塊仿真圖</p><p><b>  結果分析:</b></p><p>  有上圖得知。仿真結果和我們設計完全符合。</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>  仿真結果:</b></p><p>  圖23 ram_double模塊仿真圖</p><p><b>  結果分析:</b></p><p>

133、  有上圖得知。仿真結果和我們設計完全符合。</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>  仿真結果:</b></p><p>  圖24 FIFO模塊仿真圖</p><p><b>  結果分析:</b></p><p>  有上圖得知。仿真結果和我們設

141、計完全符合。</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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論