FPGA作业.2

这篇博客介绍了FPGA设计的一些基本组件实现,包括4X4交叉开关、8位优先选择器、38译码器和416译码器的资源消耗对比、无符号及有符号加法器、流水线加法器的延迟分析,以及乘法器的实现。还探讨了不同类型的计数器和状态机的设计,最后展示了并入串出移位寄存器的代码及仿真结果。
摘要由CSDN通过智能技术生成

2、关于4X4交叉开关
在已有代码的基础上进行了修改

module mux44(in0,in1,in2,in3,out0,out1,out2,out3,sl0,sl1,sl2,sl3);  
parameter WL = 16;
input [WL-1:0] in0,in1,in2,in3;
input sl0,sl1,sl2,sl3;
output[WL-1:0] out0,out1,out2,out3;
reg   [WL-1:0] out0,out1,out2,out3;
always @ (in0 or in1 or in2 or in3 or out0 or sl0 or sl1) begin
  if((sl0)&&(sl1))
    out0=in3;
  else 
if((!sl0)&&(sl1))
    out0=in2;
  else
  if((sl0)&&(!sl1))
  out0=in1;
  else 
  out0=in0;   
end
always @ (in0 or in1 or in2 or in3 or out1 or sl1 or sl2) begin
  if((sl1)&&(sl2))
    out1=in3;
  else 
  if((!sl1)&&(sl2))
    out1=in2;
  else
  if((sl1)&&(!sl2))
  out1=in1;
  else 
  out1=in0;   
end
always @ (in0 or in1 or in2 or in3 or out2 or sl2 or sl3) begin
  if((sl2)&&(sl3))
    out2=in3;
  else 
if((!sl2)&&(sl3))
    out2=in2;
  else
  if((sl2)&&(!sl3))
  out2=in1;
  else 
  out2=in0;   
end
always @ (in0 or in1 or in2 or in3 or out3 or sl0 or sl3) begin
  if((sl0)&&(sl3))
    out3=in3;
  else 
if((!sl0)&&(sl3))
    out3=in2;
  else
  if((sl0)&&(!sl3))
  out3=in1;
  else 
  out3=in0;   
end
endmodule

下面是进行编译之后的资源消耗的显示。上图为4X4,下图是2X2的显示:
4x4
在这里插入图片描述
编译之后,RTL view如下图所示:
RTL
3、这题为做一个8位优先选择器,代码相对简单,如下面展示:

module YX(
  IN        ,   
  OUT       );  
input [7:0] IN;
output[3:0] OUT;

reg   [3:0] OUT;

always @ (IN) begin
   if(IN[7])       
     OUT = 3'b0111;
   else if(IN[6])  
     OUT = 3'b0110;
   else if(IN[5])  
     OUT = 3'b0101;
   else if(IN[4])  
     OUT = 3'b0100;
   else if(IN[3])           
     OUT = 3'b0011; 
   else if(IN[2])
     OUT = 3'b0010;
   else if(IN[1])
     OUT = 3'b0001;
   else if(IN[0])
     OUT = 3'b0000;
   else 
     OUT = 3'b1111;

end
endmodule

编译之后,观看RTL View.如图
在这里插入图片描述

4、关于38译码器和416译码器<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值