1 / 16
文档名称:

常见面试笔试题verilog程序库.docx

格式:docx   大小:339KB   页数:16页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

常见面试笔试题verilog程序库.docx

上传人:woyaonulifacai 2021/10/25 文件大小:339 KB

下载得到文件列表

常见面试笔试题verilog程序库.docx

相关文档

文档介绍

文档介绍:常见面试笔试题verilog程序库
常见面试笔试题verilog程序库
常见面试笔试题verilog程序库
加减法
module addsub      
( input [7:0] dataa,  
 input [7:0] datab, 
  input add_sub,     // if this is 1, add; else subtract
input clk,    
  output reg [8:0] result );        
  always @ (posedge clk)       
begin       
    if (add_sub) result <= dataa + datab;    //or "assign {cout,sum}=dataa+datab;"
      else     result <= dataa — datab;
   end     
endmodule  
四位的 全加法器.
module add4(cout,sum,a,b,cin)
input[3:0]a,b; input cin;
output [3:0] sum; output cout;
assign ﻩ{cout,sum}=a+b+cin;
endmodule
补码不仅可以执行正值和负值转换,其实补码存在的意义,就是避免计算机去做减法的操作。
  1101      -3 补
+  1000    8
    01015    
假设 -3 + 8,只要将 -3 转为补码形式,亦即 0011 => 1101,然后和 8,亦即 1000 相加
就会得到 5,亦即 0101。至于溢出的最高位可以无视掉。
乘法器
module mult(outcome,a,b);
parameter SIZE=8;
input[SIZE:1] a,b;
output reg[2*SIZE:1] outcome;
integer i;
always @(a or b)
     begin outcome<=0;
    for(i=0,i〈=SIZE;i=i+1)
   if(b[i]) outcome<=outcome+(a<<(i-1));
常见面试笔试题verilog程序库
常见面试笔试题verilog程序库
常见面试笔试题verilog程序库
    end
endmodule
另一种乘法器。在初始化之际,取乘数和被乘数的正负关系,然后取被乘数和乘数的正值。输出结果根据正负关系取得。
else if( Start_Sig )            
            case( i )           
          0:   begin  
         isNeg 〈= Multiplicand[7] ^ Multiplier[7];
               Mcand <= Multiplicand[7] ? ( ~Multiplicand + 1'b1 ) : Multiplicand;
           Mer <= Multiplier[7] ? ( ~Multiplier + 1'b1 ) : Multiplier;
           Temp 〈= 16'd0;
               i <= i + 1’b1;
            end 
         1: ﻩ // Multipling
          if( Mer == 0 ) i <= i + 1'b1;  
         else begin Temp 〈= Temp + Mcand; Mer <= Mer — 1'b1; end           
        2:   begin isDone 〈= 1’b1; i <= i + 1'b1; end