校招IC FPGA系列之程式設計題合集

2021-10-23 18:03:13 字數 2992 閱讀 3361

校園招聘即將開始,是時候回顧一下fpga的程式設計基礎。

1. 同步fifo的設計

module fifo_module

( input clk,

input rst_n,

input write_req,

input [7:

0]data_in,

input read_req,

output reg [7:

0]data_out,

output fifo_full,

output fifo_empty);

parameter deep =

3'd4;

reg [7:

0]ram[deep:0]

;reg [2:

0]count;

always@(posedge clk or negedge rst_n)if(

!rst_n)

begin

ram[0]

<=

8'd0;

ram[1]

<=

8'd0;

ram[2]

<=

8'd0;

ram[3]

<=

8'd0;

ram[4]

<=

8'd0;

count <=

8'd0;

endelse

if(read_req && write_req && count < deep && count >0)

begin

ram[0]

<=data_in;

ram[1]

<=ram[0]

; ram[2]

<=ram[1]

; ram[3]

<=ram[2]

; ram[4]

<=ram[3]

; data_out<=ram[count]

;end

else

if( write_req && count < deep )

begin

ram[0]

<= data_in;

ram[1]

<=ram[0]

; ram[2]

<=ram[1]

; ram[3]

<=ram[2]

; ram[4]

<=ram[3]

; count <= count +

1'b1;

endelse

if(read_req && count >0)

begin

data_out<=ram[count]

; count <= count -

1'b1;

end

assign fifo_full =

(count = deep)?1

'b1 ; 1'b0;

assign fifo_empty =

(count =0)

?1'b1 ; 1'b0;

endmodule

2. 任意整數分頻的設計

module clk_div

( input clk,

input rst_n,

output clk_out);

parameter width =3;

//計數器的位數,計數的最大值為 2**width-1

parameter n =5;

//分頻係數,請確保 n < 2**width-1,否則計數會溢位

reg [width-1:

0] cnt_p,cnt_n;

reg clk_p,clk_n;

//上公升沿觸發時計數器的控制

always @ (posedge clk or negedge rst_n)

begin

if(!rst_n)

cnt_p <=};

else

if(cnt_p == n-1)

cnt_p <=};

else

cnt_p <= cnt_p +

1'b1;

endalways @ (posedge clk or negedge rst_n)

begin

if(!rst_n)

clk_p <=

1'b1;

else

if(cnt_p <

(n>>1)

) clk_p <=

1'b1;

else

clk_p <=

1'b0;

end//下降沿觸發時計數器的控制

always @ (negedge clk or negedge rst_n)

begin

if(!rst_n)

cnt_n<=0;

else

if(cnt_n==

(n-1))

cnt_n<=0;

else cnt_n<=cnt_n+1;

end//下降沿觸發的分頻時鐘輸出,和clk_p相差半個時鐘

always @ (negedge clk)

begin

if(!rst_n)

clk_n<=0;

else

if(cnt_n<

(n>>1)

) clk_n<=0;

else

clk_n<=1;

//得到的分頻時鐘正週期比負週期多乙個clk時鐘

endassign clkout =

(n==1)

?clk:

(n[0])

?(clk_p&clk_n)

:clk_p;

end

endmodule

網易校招程式設計題

define crt secure no warnings 1 include include include includeusing namespace std 小易準備去魔法王國採購魔法神器,購買魔法神器需要使用魔法幣,但是小易現在一枚魔法幣都沒有,但是小易有兩台魔法機器可以通過投入x x可以...

2016校招程式設計題《三》

給定乙個字串.問是否可以通過新增乙個字元將其變成回文串。輸入 一行由小寫字母構成的字串,長度不超過10。輸出 yes 或者no 輸入樣例 testest 輸出樣例 yes include include using namespace std bool fun string str if high ...

迅雷2014校招程式設計題

已知集合a和b的元素分別用不含頭結點的單鏈表儲存,函式difference 用於求解集合a與b的差集,並將結果儲存在集合a的單鏈表中。例如,若集合a 集合b 完成計算後a 題意簡單說就是鍊錶差集簡單操作。cpp view plain copy include using namespace std ...