沙沙资源网 IT教程 VHDL语言Process

VHDL语言Process

vhdl语言

FPGA编程, VHDL语言, 芯片ALTERA Cyclone EP1C60240C8, UP3-1C6实验板, Quartus II.

VHDL语言中一般定义一个Entity, Entity中定义引脚之类的与其他模块交互的接口. 一个Entity可能对应N个Architecture, 并且具体的对应可以定义Configuration进行配置.

一个Architecture可以包含多个Process, 这些Process是并行的, Process由其后括包里的任一Signal触发, 触发点是在这个Process结尾的End Process处, 也就是在程序运行完即运行到End Process了才能被触发, 这就保证了一个过程被运行完 (Process也可以由其包含的 Wait 语句触发, 此时触发点在 Wait 语句处). 各Process之间的数据传递由Architecture头部声明的Signal传递, 而对Signal的赋值一般用>=进行, 个人的理解是这个赋值允许延迟, 即没执行完便执行下一个语句, 但它会尽量早的执行. 赋值语句若要立即执行需用:=, 一般Variable变量都这样赋值.

如果在不同进程中对同一信号量进行赋值, 就会出现如下错误(Quartus II), 因为两处赋值由于是同步的, 会冲突:

Error: Can’t resolve multiple constant drivers for net “SHOW_MODE[3]” at UP3_CLOCK.vhd(462)

Error: Constant driver at UP3_CLOCK.vhd(498)

Error: Can’t elaborate top-level user hierarchy

Error: Quartus II Analysis & Synthesis was unsuccessful. 3 errors, 6 warnings

    Error: Processing ended: Sun Sep 03 11:16:41 2006

    Error: Elapsed time: 00:00:02

Error: Quartus II Full Compilation was unsuccessful. 3 errors, 6 warnings

代码如:

SIGNAL SHOW_MODE: STD_LOGIC_VECTOR(3 DOWNTO 0);

PROCESS (MODE_SWITCH)

BEGIN

    SHOW_MODE <= X”1″;

END PROCESS;

PROCESS (MODE_SWITCH)

BEGIN

    SHOW_MODE <= X”0″;

END PROCESS;

有的时候两个Process要同步, 只要在一个Process中加一个Signal, 比如:sig <= NOT sig; 再由sig触发另一个Process即可.

基于VHDL语言的一位全加器

全加器的真值表如下:该全加器程序由以下三个子程序构成1)“f_adder”全加器程序LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTIT

文章回顾

大家看了本文VHDL语言Process的精彩教程资源内容,是不是对VHDL语言Process了解更多,真心希望VHDL语言Process能帮助到你, 小编会一直给你带来更多教程资源文章信息。

声明:本站内容和图片来源于网络和读者投稿,本站无法甄别投稿用户享有著作权,根据《信息网络传播权保护条例》,如果转载的作品侵犯了您的权利,请在一个月内通知我站及时删除(serviceaffair#outlook.com #改成@)。https://www.shawanolakecottagemartzke.com/19186.html
返回顶部