您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页Verilog常见必备面试题

Verilog常见必备面试题

来源:好走旅游网
Verilog常见必备面试题

1、Use verilog hdl to implement a flip-flop with synchronous RESET and SET, a Flip-flop with asynchronous RESET and SET.

always@(posedge clk or negedge reset always@(posedge clk) or posedge set)

begin

begin

if(set)

if(set)

Q<>

Q<>

else if(!reset)

else if(!reset)

Q<>

Q<>

else

else

Q<>

Q<>

end

end

异步reset和set 同步reset和set

2、Use verilog hdl to implement a latch with asynchronous RESET and SET.

always @(clk or reset or set) begin if(set) Q=1; else if(!reset) Q=0; else Q=D; end

3、Use Verilog hdl to implement a 2-to-1multiplexer.

assign Y=(SEL==1'b0)?A:B;

4、Use AND gate, OR gate and Inverter toimplement a 2-to-1 multiplexer.

module MUX21(A, B, SEL, Y); input A,B,SEL; output Y;

net SEL_NOT, A_AND, B_AND; not u0(SEL_NOT, SEL); and u1(A_AND, SEL_NOT, A); and u2(B_AND, SEL, B); or u3(Y, A_AND, B_AND); endmodule

5、Use a 2-to-1 multiplexer to implement a two input OR gate.

module or2(A, B, Y); input A, B; output Y;

MUX21 u0(Y, A, B, B ); endmodule

module MUX21(Y, A ,B, SEL) input A,B,SEL; output Y;

assign Y=(SEL==1’b0):A:B; endmodule assign Y=A?A:B;

6、Use a tri-state buffer to implement Open-Drain buffer. assign Y=EN?DataIn:1'bz;

7、To divide one input clock by3, Written by verilog hdl. module clk_div_3(clk, reset, clk_out); input reset,clk; output clk_out; reg clk_out; reg [1:0] cnt;

always@(posedge clk or negedge reset) begin if(!reset) begin cnt<> clk_out<>

else if(cnt==2'b01) begin clk_out<> cnt<=cnt+1'b1;>=cnt+1'b1;> else if(cnt==2'b10) begin clk_out<> cnt<> else cnt<> end endmodule , 占空比1/3

8、To divide one input clock by3, 50% dutycycle is required. Written by verilog hdl.

module clk_div_3(clk, reset, clk_out); input reset,clk; output clk_out; reg clk_out1, clk_out2; reg [1:0] cnt1,cnt2;

assign clk_out = clk_out1 | clk_out2;

always@(posedge clk or negedge reset) begin if(!reset) begin cnt1<> clk_out1<>

else if(cnt1==2'b01) begin clk_out1<> cnt1<=cnt1+1'b1;>=cnt1+1'b1;> else if(cnt1==2'b10) begin clk_out1<> cnt1<> else cnt1<> end

always@(negedge clk or negedge reset) begin if(!reset) begin cnt2<> clk_out2<>

else if(cnt2==2'b01) begin clk_out2<> cnt2<=cnt2+1'b1;>=cnt2+1'b1;> else if(cnt2==2'b10) begin clk_out2<> cnt2<> else cnt2<> end endmodule

module clk_div_3(clk, reset, clk_out); input reset,clk; output clk_out; reg [1:0] cnt;

reg clk_out1, clk_out2; always@(posedge clk) begin if(!reset) cnt<>

else if(cnt=='d2) cnt<> else cnt<> end

always @(posedge clk or negedge reset) begin if(!reset) clk_out1<> else if(cnt=='d2) clk_out1<> else if(cnt == 'd1) clk_out1<> end

always @(negedge clk or negedge reset) begin if(!reset) clk_out2<> else if(cnt=='d2) clk_out2<> else if(cnt == 'd1) clk_out2<> end

assign clk_out = clk_out1 | clk_out2; endmodule

(来源:EDN电子技术设计)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务