我绝不是Verilog的专家,我想知道是否有人知道这些增加价值的方法更好.对不起,如果这个问题太简单了.
方式A:
在组合逻辑块中,可能在状态机中:
//some condition
count_next = count + 1;
Run Code Online (Sandbox Code Playgroud)
然后在顺序块中的某个地方:
count <= count_next;
Run Code Online (Sandbox Code Playgroud)
或方式B:
组合块:
//some condition
count_en = 1;
Run Code Online (Sandbox Code Playgroud)
顺序块:
if (count_en == 1)
count <= count + 1;
Run Code Online (Sandbox Code Playgroud)
我经常看到Way A.方法B的一个潜在好处是,如果你在状态机的许多地方递增相同的变量,也许它只使用一个加法器而不是许多加法器; 或者是假的?
首选哪种方法,为什么?要么有明显的缺点?
谢谢.
我有一个数组:
type offsets_type is array (4 downto 0) of std_logic_vector (4 downto 0);
signal av : offsets_type;
Run Code Online (Sandbox Code Playgroud)
我想这样做,基本上:av[addr] += 1;
但这一行:
av(to_integer(unsigned(addr))) <= unsigned(av(to_integer(unsigned(addr))) + 1;
Run Code Online (Sandbox Code Playgroud)
产生此错误:
to_integer can not have such operands in this context.
我也试过使用conv_integer,但这给出Wrong type of index了一个错误.
有解决方案吗 谢谢.
我从来没有做过任何脚本(对Linux也是新手).我想要的是用户可以点击的图标,它执行以下操作:
1.将屏幕分辨率更改为640x480.
2.运行程序(让我们调用它/path/myprogram)
3.当程序终止时,将屏幕分辨率更改回1024x768.
显然有一种叫做"xrandr"的东西可能会做到这一点,但我不确定它是如何工作的.此外,屏幕现在设置为"颠倒",并且应该始终保持这种状态(我不知道这对于此脚本是否重要).
另外,我注意到在Ubuntu中,当点击脚本时,它会显示一个提示:"在终端中运行","显示","运行"等.有没有办法让它默认为"运行"所以这个提示根本没有显示?
非常感谢你.
[[编辑]]
我使用了一个脚本xrandr,它几乎可以工作.它的行为与转到首选项 - >监视器的行为不同.当我使用脚本更改为640x480时,屏幕右侧的一部分会被切断.此外,由于某种原因,它将刷新率更改为73Hz而不是60Hz(如果我尝试将"刷新率"从"首选项"更改为60Hz,则图像会变得有点失真).
我试图xrandr --prop 弄清楚发生了什么,常规的首选项 - >监视器方式和xrandr方式之间的唯一区别似乎是这一行:
640x480 72.8 75.0 60.0*
640x480 72.8* 75.0 60.0
Run Code Online (Sandbox Code Playgroud)
该部分的标题是(我认为这是一个标题?):
VGA1 connected 640x480+0+0 inverted (normal left inverted right x axis y axis) 0mm x 0mm
Run Code Online (Sandbox Code Playgroud)
数字似乎与刷新率相对应,但这并不能解释为什么图像会被切断/扭曲.
所以基本上,我不知道发生了什么,也不知道如何解决它.我需要将分辨率更改设置为与Preferences - > Monitors相同.
此外,就桌面图标而言,事实证明Ubuntu有一个叫做"启动器"的东西,效果很好.还是非常感谢.:)