原创 【博客大赛】Verilog 常见面试题整理

2013-9-3 11:00 3911 12 14 分类: FPGA/CPLD

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 or posedge set)

begin

if(set)

Q<=1;

else if(!reset)

Q<=0;

else

Q<=D;

end

always@(posedge clk)

begin

if(set)

Q<=1;

else if(!reset)

Q<=0;

else

Q<=D;

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<=2'b00;

clk_out<=0;end

else if(cnt==2'b01)  begin clk_out<=~clk_out;

cnt<=cnt+1'b1; end

else if(cnt==2'b10) begin clk_out<=~clk_out;

cnt<=2'b00;end

else cnt<=cnt+1'b1;

end

endmodule

20130903105914441001.jpg, 占空比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<=2'b00;

clk_out1<=0;end

else if(cnt1==2'b01)  begin clk_out1<=~clk_out1;

cnt1<=cnt1+1'b1; end

else if(cnt1==2'b10) begin clk_out1<=~clk_out1;

cnt1<=2'b00;end

else cnt1<=cnt1+1'b1;

end

always@(negedge clk or negedge reset)

begin

if(!reset)

begin cnt2<=2'b00;

clk_out2<=0;end

else if(cnt2==2'b01)  begin clk_out2<=~clk_out2;

cnt2<=cnt2+1'b1; end

else if(cnt2==2'b10) begin clk_out2<=~clk_out2;

cnt2<=2'b00;end

else cnt2<=cnt2+1'b1;

end

endmodule

20130903105924327002.jpg

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<='d0;

else if(cnt=='d2)

cnt<='d0;

else

cnt<=cnt+1;

end

always @(posedge clk or negedge reset)

begin

if(!reset)

clk_out1<='d0;

else if(cnt=='d2)

clk_out1<=~clk_out1;

else if(cnt == 'd1)

clk_out1<=~clk_out1;

end

always @(negedge clk or negedge reset)

begin

if(!reset)

clk_out2<='d0;

else if(cnt=='d2)

clk_out2<=~clk_out2;

else if(cnt == 'd1)

clk_out2<=~clk_out2;

end

assign clk_out = clk_out1 | clk_out2;

endmodule

20130903105929220003.jpg

文章评论2条评论)

登录后参与讨论

用户450790 2013-9-16 15:13

第五个我笔试的时候遇过,不知道当初怎么折腾出来的!

用户385857 2013-9-6 11:30

楼主的这些东西真的很有价值,我也觉得,正是这些简单的东西才值得我们深入理解,深入学习,深入研究!
相关推荐阅读
sunyzz 2017-08-19 10:38
【博客大赛】AVALON总线介绍
1、AVALON总线简介Avalon总线是一种协议较为简单的片内总线,是ALTERA公司定义的片上互联总线,该总线可以将诸如NIOS II的CPU与其他外设连接起来,进而进行数据交换。AVALON总线...
sunyzz 2017-08-17 21:36
【博客大赛】不要轻易做职场滥好人
小A毕业于国内普通高校,但是他聪明,勤奋,能干,动手能力强,可是即便有这些优点也不能让小A轻轻松松找到一份好工作。这不,去年9月份小A好不容易找到一份工作,然后立马就入职了C公司,生怕C公司过两天不要...
sunyzz 2017-08-16 21:15
【博客大赛】IC设计低功耗技术四
五:工艺层面的降低功耗前面几节都是在讨论设计人员如何在前期阶段,中期阶段降低功耗,涉及到软件层面的,硬件层面的,这些技巧基本都是前辈总结出来的,或者根据理论推论出来的。但是到了后期,想降低功耗基本就要...
sunyzz 2017-08-14 22:35
【博客大赛】IC设计之低功耗技术三
四:RTL(寄存器传输)级的低功耗设计4.1 状态机的设计状态机编码中一般有两种方式,普通的二进制编码,特殊的格雷码,格雷码的特点是两个数据之间的跳变时只会有一个bit在toggle,显然比起多bit...
sunyzz 2017-08-12 16:51
【博客大赛】IC设计之低功耗技术二
三、架构层面的降低功耗系统的实现有很多的方式,每种方式对功耗的影响都不相同,本节主要介绍架构对功耗的影响。3.1 高级门口电路 在同步电路系统中,时钟占据了大部分的动态功耗,因而在一些情况下,如果有些...
sunyzz 2017-08-12 10:37
【博客大赛】IC 设计之低功耗技术一
一、前言随着计算机技术和微电子技术的迅速发展,嵌入式系统应用领域越来越广泛。节能是全球化的热潮,如计算机里的许多芯片过去用5V供电,现在用3.3V,1.8V,甚至更低的电压。目前的低功耗设计主要从芯片...
我要评论
2
12
关闭 站长推荐上一条 /2 下一条