VHDL求模运算

2019-03-25 09:54发布

最近在写一个VHDL的年历+时钟程序,发现mod运算不能识别,
if (year mod 400=0) or ((year mod 4=0) and (year mod 100 /=0)) then
                        leap<='1';
                else leap<='0';
编译时提示错误信息:Error (10327): VHDL error at calendar.vhd(70): can't determine definition of operator ""mod"" -- found 0 possible definitions
我的头文件定义是
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
编译环境是quartus II 9.1
不知道怎样才能让编译通过,希望各位朋友提供一点帮助,谢谢啦 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
mr.king
1楼-- · 2019-03-25 14:51
< / use        ieee.std_logic_arith.all;
1067941083
2楼-- · 2019-03-25 19:55
我按照你所说的去添加了arith头文件,不过编译的时候还是出现了相同的问题,求救……
仙猫
3楼-- · 2019-03-25 22:27
 还真不知道,能这么简单地求模吗?有时语法虽对,但实际芯片编程不能这么做。“mod 4”好办,把最低2位留下其余屏蔽掉就行了,“mod 400”怎么地也得用状态机实现吧?
zm880517
4楼-- · 2019-03-25 22:28
 精彩回答 2  元偷偷看……
eeleader
5楼-- · 2019-03-26 01:36

VHDL 能支持的数学运算很有限制,大概只有+,-,*,/ 标准4种基本运算.

 

如果求模运算, 考虑用上面的4种基本运算构建函数进行.

 

A MOD 4 , 即是A对4能整除的商,也就是除法.

一周热门 更多>