- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究 VHDL 设计,并且它可以工作,但是代码非常丑陋,而且我似乎正在尝试围绕语言的设计来实现我的目标,这一事实让我觉得有些事情是错误的。我对 VHDL 还很陌生,但我已经研究该项目的较小部分近一个月了,所以我有了总体想法。然而,这部分有点复杂。
我需要一个过程,该过程将在信号(END_ADC)的上升沿之后创建一个时钟周期长脉冲(LOAD_PULSE),但直到从该信号(END_ADC)的最新上升沿过去4个时钟或第二个信号的下降沿 (LVAL)。
为了完成等待期,我构建了一个计时器模块来计算微秒和周期,如下:
entity uS_generator is
generic(
Frequency : integer := 66 -- Frequency in MHz
);
Port (
CLK : in STD_LOGIC;
RESET : in STD_LOGIC;
T_CNT : out integer range Frequency downto 1 := 1;
uS_CNT : out integer range 65535 downto 0 := 0
);
end uS_generator;
architecture behavior of uS_generator is
signal T_CNT_INT : integer range Frequency downto 1 := 1; -- Counter for 1 uS
signal uS_CNT_INT : integer range 65535 downto 0 := 0;
begin
COUNT: process(CLK, RESET)
begin
if RESET = '1' then
T_CNT_INT <= 1;
uS_CNT_INT <= 0;
elsif rising_edge(CLK) then
if T_CNT_INT = (Frequency - 1) then -- Increment one clock early so last rising edge sees one uS elapsed.
uS_CNT_INT <= uS_CNT_INT + 1;
T_CNT_INT <= T_CNT_INT + 1;
if uS_CNT_INT = 65535 then
uS_CNT_INT <= 0;
end if;
elsif T_CNT_INT = Frequency then
T_CNT_INT <= 1;
else
T_CNT_INT <= T_CNT_INT + 1;
end if;
end if;
end process COUNT;
T_CNT <= T_CNT_INT;
uS_CNT <= uS_CNT_INT;
end behavior;
我用于设计脉冲生成部分的流程如下:
loadPulseProc: process(PIXEL_CLK, END_ADC, RESET)
begin
if RESET = '1' then
PULSE_FLAG <= '0';
LOAD_PULSE <= '0';
elsif rising_edge(END_ADC) then
PULSE_FLAG <= '1';
end if;
if rising_edge(PIXEL_CLK) then
if PULSE_FLAG = '1' and END_ADC = '1' and LVAL <= '0' and ADC_TMR_T >= 4 and LVAL_TMR_T >= 4 then
LOAD_PULSE <= '1', '0' after PIXEL_CLK_T;
PULSE_FLAG <= '0';
end if;
end if;
end process loadPulseProc;
ADCTimerProc: process(END_ADC, RESET)
begin
if RESET = '1' then
ADC_TMR_RST <= '1', '0' after PIXEL_CLK_T/10;
end if;
if rising_edge(END_ADC) then
ADC_TMR_RST <= '1', '0' after PIXEL_CLK_T/10;
end if;
if falling_edge(END_ADC) then
ADC_TMR_RST <= '1', '0' after PIXEL_CLK_T/10;
end if;
end process ADCTimerProc;
LVALTimerProc: process(LVAL, RESET)
begin
if RESET = '1' then
LVAL_TMR_RST <= '1', '0' after PIXEL_CLK_T/10;
end if;
if rising_edge(LVAL) then
LVAL_TMR_RST <= '1', '0' after PIXEL_CLK_T/10;
end if;
if falling_edge(LVAL) then
LVAL_TMR_RST <= '1', '0' after PIXEL_CLK_T/10;
end if;
end process LVALTimerProc;
PIXEL_CLK_T 是时钟周期,15.152 ns。
这个设计是有效的,模拟表明它按照我的要求进行,但只有在通过将它们分成真正应该在一起的单独的 if 语句来避免由于使用多个上升沿或下降沿调用而导致的错误之后才发生重大麻烦。据我所读,使用上升沿和下降沿似乎仅保留用于时钟,那么这只是不好的做法吗?如何避免这种行为但仍然创建相同的输出?
谢谢!
最佳答案
是的,rising_edge()/falling_edge()
只能用于时钟信号。虽然它在模拟中有效,但它可能会在综合中引起问题和意外的硬件。
综合工具根据函数的参数推断时钟,并将此类信号/线路放置在 FPGA 中的特殊轨道上(假设您的设计目标是 FPGA)。该工具将进一步推断特殊的时钟缓冲区,并警告您的输入时钟引脚是否不支持时钟。
引入多个时钟可能会导致异步设计,并使其容易出现交叉时钟故障。
检测信号的上升沿或下降沿是由如下所示的边缘检测电路完成的,该电路将前一个时钟周期中的信号与当前值进行比较。
需要的信号:
signal mySignal_d : std_logic := '0';
signal mySignal_re : std_logic;
所需逻辑:
mySignal_d <= mySignal when rising_edge(Clock);
mySignal_re <= not mySignal_d and mySignal;
第一行转换为 1 位 D 触发器(您也可以使用进程)。当mySignal
从低电平变为高电平时,第二条线生成一个周期选通信号。我使用 *_d
表示原始输入的延迟信号,使用 *_re
表示上升沿。
生成的信号仍然与时钟
同步。
关于syntax - 在非时钟信号上使用上升沿是不好的做法吗?还有其他选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37035461/
我问我任务buildDependent是否还会建立第一级依赖项目的依赖项。 其他受抚养者不是过渡依赖于最初的项目吗? 为了更好地理解我的意思:D-> A <-B <-C 项目B和D是A的第一层依赖,而
function hoverimgon(elem){ $(elem).find('.credentials-popup').slideDown(800); }
我有一个数据集,其中每一行代表某些行为的发生次数。这些列代表设定时间量的窗口。它看起来像这样: +----------+----------+----------+----------+-------
这是我在这个网站上要问的第一个问题,如果我的处理方式有误,请务必告诉我。 无论如何,在我创建的对象 (dog) 中,我有一个“实时”函数,它通过使用 javascript 的 setInterval
我的网站上有一个谷歌图表,它是一个折线图。但是我的 Y 轴数据值只会以整数形式增加,所以我不想在 Y 轴上有“4.5”值,如您所见: 如果有人能指出正确的方向,我将不胜感激! 最佳答案 您应该使用以下
我有一个错误,当显示键盘并且切换键盘顶部的预测文本框时, View 会弹出,让用户看到黑屏。发生这种情况的原因是因为我使用了 -= 运算符,每次调用此方法时都会使值复合。该方法可以连续调用多次。我正试
我知道如何通过为父级执行 position:absolute 和为子级执行 position:relative 来将 div 堆叠在 div 之上,但是我如何制作一个 div从另一个分区“升起”?我想
我正在使用最新版本的 ionic 2。我的代码有一个 里面有一个文本输入。当我尝试在 Android 上输入内容时,整个页面都会被键盘向上推。 html文件
我正在使用最新版本的 ionic 2。我的代码有一个 里面有一个文本输入。当我尝试在 Android 上输入内容时,整个页面都会被键盘向上推。 html文件
我正在尝试解析 truetype 字体以构建和存储每个字体大小的上升部分、下降部分,我正在使用 http://nodebox.github.io/opentype.js/这做得非常出色,但我不明白如何
我的布局需要 windowSoftInputMode= adjustmentRezise,以便我的按钮与键盘一起上升。但我不希望我的 BottomNagivationView 受到此影响。我该如何解决
This answer不适用于 WebView,this doesn't任何一个。所以这个问题是专门针对使用 WebView 的。下面的代码加载了一个带有文本输入字段的网页。单击文本输入字段时,会出现
我在将 onOptionsItemSelected 与 Android Studio 的默认“设置 Activity ”(扩展 AppCompatPreferenceActivity)一起使用时遇到问
我是一名优秀的程序员,十分优秀!