设计世界

  • 首页
  • 文章
    • 3 d CAD
    • 电子•电
    • 紧固和加入
    • 工厂自动化
    • 线性运动
    • 运动控制
    • 测试和测量
    • 传感器
  • 3 d CAD模型
    • PARTsolutions
    • traceparts.
  • 领导
    • 2020年获奖者
    • 2019年获奖者
    • 跳跃奖励
  • 资源
    • 订阅
    • 数字问题
      • EE世界数字问题
    • 设计工程的未来
    • 跳跃奖励
    • MC²运动控制教室
    • 运动设计指南库
    • 播客
    • 供应商
    • 网络研讨会
  • 工程中的妇女
  • 电子书/技术提示
  • 视频
  • 新冠肺炎

从Verilog开始

通过克里斯弗朗西斯|2014年12月12日

分享

如果你有软件背景,使用CPLD/ fpga(复杂可编程逻辑器件/现场可编程门阵列)进行数字设计,那么你需要采用不同的思维方式来设计逻辑。虽然Verilog和VHDL看起来像一种传统的编程语言,但它们的解释方式是不同的。对于微处理器来说,软件的操作是严格顺序的。连续执行十个指令,一个接一个。然而,在Verilog和VHDL中,代码被编译成能够同时满足整个代码的东西。这并不意味着如果你是这样写的事情就不是顺序的,而是像

A = B;

B = a + 1;

会引起混乱。通过传统的软件,如果B的值为10,则A也将成为值10,然后B将成为11.但是,对于CPLD,代码将尝试找到一些逻辑,该逻辑将同时满足两个语句,这是棘手的,所以你很可能会出错。

所以,你需要记住,你正在设计一些逻辑,你所描述的最终将成为大量的逻辑门和触发器,它们将一起工作,以满足你的描述。其好处是速度。一个复杂的操作,在软件中需要几十个操作,将需要很长的时间来完成,而如果它可以表示为一个数字逻辑块,它可以在单个时钟周期内完成。

这并不是说你不会在CPLD中使用顺序操作。例如,如果您希望具有16位结果的两个8位数字的乘法函数,您可以简单地完成大量逻辑的全部,它可以很快完成。但是,空间或CPLD大小比特定应用程序的该操作的速度更重要,因此您可以通过班次实现乘法并添加方法,这需要更长但较少的逻辑。

如果您来自数字电子背景,那么描述与陈述的软件的逻辑似乎似乎很奇怪。在过去,可编程逻辑器件(PLD)很小,可以手动编码,也可以用相当低的级别语言进行编码,在那里,您可以直接控制D型触发器。电流装置的尺寸和复杂性意味着很少使用方法,并且采用更高的水平方法。不幸的是,使用CPLD的工具已经变得有点碎片,并且您经常会发现您正在为设计的一个工具工作,然后是另一个用于综合,另一个用于仿真。这些软件通常可以来自具有不同用户界面的不同供应商。

FPGA.

以上面非常简单的半加法器为例。在Verilog中可以简单地描述为

模块半_der(a,b,s,c);

输入A,B;

输出S、C;

分配s = a ^ b;

分配C = A&B;

终点

您可能会注意到它与微控制器软件不同。但是,如前所述,顺序写入的陈述不一定产生顺序结果。例如,上面的S和C将以与逻辑图相同的方式以并行逻辑实现。■在C之前不会被分配,甚至认为陈述按此顺序。如果重新排序,则结果逻辑将是相同的。

要测试您的代码,您需要一个“testbench”。虽然某些软件允许您以图形方式交互地生成刺激,但设备和设计的越来越复杂意味着它通常使用更多的Verilog代码来完成。此外,通过大量的波形看不一定是非常有效的,您可能不会发现错误,因此典型的测试禁止将不仅包括逻辑的刺激,还包括检查结果。这意味着测试禁止通常需要更长时间写入初始代码,需要更多的代码行和更长的调试。这是调试您首先写的代码!

无论如何,对于这个简单的例子,我将展示一个没有输出检查的简单刺激。

`时间尺度1 ns / 100 ps

模块half_adder_tb ();

电线s_test,c_test;

reg a_test,b_test;

half_adder dut(。(A_test)。b (B_test), c (C_test)授予(S_test));

最初的

开始

#5 a_test = 0;

B_test = 0;

#5 A_test = 1;

B_test = 0;

#5 a_test = 0;

B_test = 1;

#5 A_test = 1;

B_test = 1;

结束

终点

“时间尺度”指令定义了时间单位和精度。请注意,它是一个“严重重音”而不是撇号!模块“half_adder_tb”是测试铃声模块,它包含使用“half_adder dut”语句的实际逻辑,该语句要求将Half_adder模块包含在项目中。之后,从“初始”声明中,是实际刺激。请注意,现在该语句实际上是顺序,其中#5表示在这种情况下的5个时间单位的延迟 - 5ns。得到的波形是:

FPGA2

这是一个简单的组合逻辑示例,但你更有可能写入注册代码。具有异步重置的8位计数器的简单示例如下所示:

模块CNTR (clk, count, RST);

输入时钟;

输入RST;

输出(7:0)数;

reg [7:0]计数;

Always @(posedge CLK或negedge RST)

开始

If (!rst) count <= 8'h00; / /计算时间

Else count <= count + 8'h01;

结束

终点

这里的变量“count”由8位组成,被定义为类型“reg”以及模块的输出。@符号后面的代码是敏感性列表,它定义了代码块中何时发生变化。在这种情况下,复位是主动的低电平和异步的。一个小的变化将使它同步:

总是@(提出包装)

开始

If (!rst) count <= 8'h00; / /计算时间

Else count <= count + 8'h01;

结束

现在计数器只会改变时钟的正边缘。

学习Verilog的最好方法是有一个“真正的”项目要做,但首先要从教程开始。如果您计划使用某个特定的CPLD供应商,那么请下载他们的免费软件(大多数供应商提供免费版本,因为他们希望鼓励您使用他们的设备),并查找演示代码和教程。这些将是关于如何真正使用他们的软件的教程,但无论如何这是必不可少的。

在互联网上搜索教程会产生很多结果,有些好,有些不好。一些Verilog Books是巨大的参考作品,而当您进展时可能有用,它们可能有点令人生畏。一本“QuickStart”书超过350页。Blaine Readler可能更简洁(和更便宜)的起始书可能是“通过示例的Verilog”。在超过100页上,它是一个更可管理的入门书。

《华盛顿邮报》从Verilog开始第一次出现在FPGA提示。


提交:FPGA提示


相关文章阅读更多>

开发套件速度在SmartFusion2 SoC fpga上工作
supreme_18tc - 300 x206
10英寸。触摸显示套件用于Zynq-7000 SoC
Cadence-300x206.
Dbx-tv全技术可用于Cadence Tensilica HiFi音频/语音处理器
xilinx - 300 x206
16nm UltraScale +设备从Xilinx公开提供的工具和文档

运动设计指南

“运动

不可或缺报名

运动控制课堂

设计世界数码版

覆盖

浏览最新的问题设计世界和背面问题在一个容易使用高质量的格式。剪辑,分享和下载与领先的设计工程杂志今天。

Edaboard电子论坛

顶级全球问题解决EE论坛涵盖微控制器,DSP,网络,模拟和数字设计,RF,电源电子,PCB路由等等

Edaboard:电子论坛

赞助内容

  • 使用超宽带的创造性方法和你需要知道的开始
  • Helukabel PVC控制和电机电缆接受Ecolab认证
  • 电子阀技术
  • 特殊戒指:自锁,平衡,ID / OD锁
  • 五个原因:2065连接器是一个可靠的替代手工焊接
  • 钻机从PLC带有边缘计算技术的优势:IIOT案例研究
工程交流

工程交流是一个用于工程师的全球教育网络社区。

联系、分享、学习就在今天

@designworld的推文
设计世界
  • 广告
  • 关于我们
  • 接触
  • 管理您的设计世界订阅
  • 订阅
  • 设计世界数字网络
  • 工程白皮书
  • 跳跃奖励

版权所有©2021 WTWh Media LLC。版权所有。除了WTWH媒体的事先书面许可之外,可能不会再现本网站上的材料,分发,传输,缓存或以其他方式使用。
隐私政策|广告|关于我们

搜索设计世界

  • 首页
  • 文章
    • 3 d CAD
    • 电子•电
    • 紧固和加入
    • 工厂自动化
    • 线性运动
    • 运动控制
    • 测试和测量
    • 传感器
  • 3 d CAD模型
    • PARTsolutions
    • traceparts.
  • 领导
    • 2020年获奖者
    • 2019年获奖者
    • 跳跃奖励
  • 资源
    • 订阅
    • 数字问题
      • EE世界数字问题
    • 设计工程的未来
    • 跳跃奖励
    • MC²运动控制教室
    • 运动设计指南库
    • 播客
    • 供应商
    • 网络研讨会
  • 工程中的妇女
  • 电子书/技术提示
  • 视频
  • 新冠肺炎
我们使用cookie来个性化内容和广告,提供社交媒体功能,并分析我们的流量。我们还与我们的社交媒体、广告和分析合作伙伴分享您使用我们网站的信息,这些合作伙伴可能会将您使用我们网站的信息与您提供给他们的或他们从您使用他们的服务中收集的其他信息相结合。如果您继续使用本网站,您即同意我们的cookies。 行没有阅读更多