导航菜单
首页 >  » 正文

verilog中reg变量赋初始值问题 verilog问题 XX is not a constant

verilog中reg变量赋初始值问题

reg型变量能在定义的时候直接赋值,这跟综合工具有关,一般不建议将这样的代码直接综合而是仅仅仿真用。
不用按reset 键也能赋值,是因为你的硬件有一个上电复位电容,就是但凡刚启动,都会自动复位。

verilog问题 XX is not a constant

if里面的条件是要写清楚的,这不是C语言。
比如:
if(ram_ena)要写成if(ram_ena==1)
if(wena)要写成if(wena==1)

使用verilog语言实现分频器 将50MHZ分为1hz和5hz

1. 纯粹的数字电路是不能实现3.5分频的。
2. 不要求综合的,Verilog可以实现。
3. 大致思路是分频,然后分成2路信号:各路信号不变化。
4. 分频器用于较高频率的时钟进行分频作,得到较低频率的信号,一般实现可通过计数器实现。
5. 1kh时钟期为2Mhz时钟期的2倍,因为尽管是DCM或者PLL,DLL,输入时钟是由最小约束的,一般是在10M左右,倍频系数也在,5M以下已经是不太可能的事情了!
6. 当然理论上类似于DCM的时钟管理单元可以级联,DCM最大输出时钟也不过240M左右,每个DCM管理单元的倍频系数最高也就16左右。

quartus中的编译错误问题

在Setting菜单项里面,General,里面的Top_Level_Entity改为add_4也就是你的模块名即可

利用IF语言设计一个3位二进制A[2:0]、B[2:0]比较电路,输出是D、E、F

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity comparator is
port ( a,b:in std_logic_vector(2 downto 0);
d,e,f:out std_logic);
end comparator;
architecture behavioral of comparator is
begin
process(a,b)
begin
if a>b then
d <= 0;e <= 1;f <= 0;
elsif a<b then
d <= 0;e <= 0;f <= 1;
else
d <= 1;e <= 0;f <= 0;
end if;
end process;
end behavioral;
题目有点儿BUG,应当是“当A<B时F=1”。