上海联影微电子笔试题

1、COMS工艺中,数字电路MOS管大部分工作在(截止)区;

2、完成一个稳定的异步信号上升沿检测,至少需要()个触发器;

module top(clk,rst_n,i_data_in,o_rising_edge);
input clk;
input rst_n;
input i_data_in;
output o_rising_edge;

reg r_data_in0;
reg r_data_in1;

assign o_rising_edge=r_data_in0&~r_data_in1;

always@(posedge clk or negedge rst_n)begin 
  if(rst_n==1'b0)begin 
     r_data_in0<=0;
      r_data_in1<=0;
  end
  else begin 
     r_data_in1<=r_data_in0;
      r_data_in0<=i_data_in;
  end
end
endmodule 

3、verilog建模中,信号强度排列是

数字电路设计对信号的定义包括以下八种:根据强度排列分别为supply,strong,pull,large,weak,midium,small,highz等状态,其中supply,strong,pull,和weak是drive(驱动),而large,medium,small是存储,highz为高阻态;supply表示电路中的最高电压或者最低电压,分别为supply0和supply1;strong电压略低一些,应该是在multi-drive电路中,采用的稍低于supply的电压,而pull在模拟电路中应该有这样的pull-up,pull-down的概念,相应的三极管电路也会有这样类似的概念,上拉电阻会提到将电压拉升的作用,下拉则正好相反;weak应该是作为电路驱动的最弱的电压。而相应的large,medium和small在存储电路中会用到,存储电路一般电压都很低,电路开关比较灵敏,而highz则是高阻态,是一种特殊的状态。接触过三态门的话应该会对这个有一定了解,在一定情况下会产生一个状态是高阻态;除了这些表示0,1,z的特性,电路还有一种特性是x,就是unknown状态。

在编写verilog代码的过程中,一般单个bit的wire型的声明可以略掉,电路会默认为这种类型,其他类型就不能省略掉了;在组合逻辑输入端,如果没有定义输入值,那么在仿真时,就会形成高阻态high-z,这种状态经过一些逻辑之后比如说nand,and等之类的就会变成unknown状态;而直接接入的reg型的输入,在仿真时没有接入输入,那么直接就是unknown;其实就相当最初的high-z经过了一些逻辑(register)变成unknown。另外,要注意的一点是highz状态并不一定是未知状态,这种状态可以保持之前的状态值,经过一段时间电路中会存在充电或者放电,然后就由high-z变成了X状态了。另外还有几种case语句,case,casez和casex,后边两种在电路设计中很少用到,但在一些特定的情况下会用到。

另外,尽管不允许出现multi-drive的情况,即一条线由多条线驱动的情况(语法上一般无法通过,除非定义了强度),,但在实际中还是会有的(目前没碰到过),两个不同强度的线驱动时,强度大的决定最终的驱动的属性。这点需要注意。

 

4、MOS管工作的最高频率跟()有关

 

5、生成锁存器的电路:

module top(

output reg wr_ff,
output reg rd_ff,
input [2:0] opt_code_ff

);

always@(*) begin
    case(opt_code_ff)
        3'b001:wr_ff = 1'b1;
        3'b110:rd_ff = 1'b1;
    endcase      
end
endmodule 

module top(

output reg wr_ff,
output reg rd_ff,
input [2:0] opt_code_ff

);

always@(*) begin
    case(opt_code_ff)
        3'b001:wr_ff = 1'b1;
        3'b110:rd_ff = 1'b1;
        default:begin
            wr_ff = 1'b0;
            rd_ff = 1'b0;
        end
    endcase      
end
endmodule 

 

module top(

output reg wr_ff,
output reg rd_ff,
input [2:0] opt_code_ff

);

always@(*) begin
     wr_ff = 1'b0;
     rd_ff = 1'b0;
    case(opt_code_ff)
        3'b001:wr_ff = 1'b1;
        3'b110:rd_ff = 1'b1;
    endcase      
end
endmodule 

module top(

output reg wr_ff,
output reg rd_ff,
input [2:0] opt_code_ff

);

always@(*) begin
      if(opt_code_ff ==  3'b001)
         wr_ff = 1'b1;
      else 
         wr_ff = 1'b0;
       if(opt_code_ff ==  3'b110)
            rd_ff = 1'b1;
         else 
            rd_ff = 1'b0;
end
endmodule 

 

 

是否会生成LATCH:https://www.cnblogs.com/lianjiehere/p/3788334.html

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值