(3)Gatesv100/Gatesv

 1.1 目录

(1)目录

(2)FPGA介绍

(3)Verilog HDL Bits:设计电路实现Thermostat(温度调节器)

(4)原理和代码讲解

1.2 FPGA简介

FPGA是在PAL、GAL、EPLD、CPLD等可编程器件的基础上进一步发展的产物。它是作为ASIC领域中的一种半定制电路而出现的,即解决了定制电路的不足,又克服了原有可编程器件门电路有限的缺点。

FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。

1.3 Gatesv100/Gatesv

在[99:0]中,您将获得一个 100 位输入向量。我们想知道每个位与其邻居之间的一些关系:

    out_both:此输出向量的每个位都应指示相应的输入位及其左侧的邻居是否为“1”。例如,out_both[98]应该指示in[98]和in[99]是否都是1。由于in[99]左边没有邻居,答案是显而易见的,所以我们不需要知道out_both[99]。
    out_any:此输出向量的每个位都应指示任何相应的输入位及其右侧的邻居是否为“1”。例如,out_any[2]应该指示in[2]或in[1]是否为1。由于 in[0] 右侧没有邻居,答案是显而易见的,所以我们不需要知道out_any[0]。
    out_different:此输出矢量的每个位都应指示相应的输入位是否与其左侧的邻居不同。例如,out_different[98]应该指出in[98]是否与in[99]不同。对于这一部分,将向量视为环绕,因此 in[99] 左侧的邻居在in [0]中。

1.4 代码

第一种方法

module top_module( 
    input [99:0] in,
    output [98:0] out_both,
    output [99:1] out_any,
    output [99:0] out_different );
    integer i;
    always@(*)
        begin
            for(i=0;i<99;i=i+1)
                begin
                    out_both[i]=in[i]&in[i+1];
                    out_any[i+1]=in[i+1]|in[i];
                    out_different[i]=in[i]^in[i+1];
                end
        end
    assign out_different[99]=in[99]^in[0];
endmodule

第二种方法

module top_module(      
    input [99:0] in,    
    output [98:0] out_both,     
    output [99:1] out_any,     
    output [99:0] out_different ); 	     

assign out_both = in[99:1] & in[98:0];    
assign out_any = in[99:1] | in[98:0];    
assign out_different = in[99:0] ^ {in[0], in[99:1]};         


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只准备起飞的小菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值