cxlspp 发表于 2011-5-19 20:17:51

求思路,想不通...VHDL新手帖

假设:
按键A控制ABC数码管显示1~100
按键B控制XYZ三位数码管,每当B按下时候,数码管XYZ要和数码管ABC显示的数字相加,并把结果显示在XYZ上.(暂时不考虑溢出)

首先把ABC里的值分别signal一下
然后判断B是否按下,然后用case么??觉得这样重复性的代码很多,每一个Case里都要做几遍加法...每个case里还要有很多判断...

觉得很浪费资源,高人指点一下..

hawkflyking 发表于 2011-5-19 21:10:23

思路如下:
1. M=ABC,百位十进制
2. N=XYZ:=0;百位十进制;
3. 按A,M=M+1;
4. 按B时,N=M+N;
5. 十进制加法子程序带进位(调用)
6. 十进制转BCD码数码管子程序(调用);

cxlspp 发表于 2011-5-19 21:35:55

回复【1楼】hawkflyking
-----------------------------------------------------------------------

你好,在表示一个范围之内的数的时候如ABC,integer是不是要比A:std_logic_Vector(3 downto 0);B:std_logic_Vector(3 downto 0);C:std_logic_Vector(3 downto 0);浪费资源呢?

hawkflyking 发表于 2011-5-19 21:41:00

一般情况是如你所说。但是用integer增加可读性,你可以自己写个std_logic_Vector转整数的子程序。1~10是十种状态。

cxlspp 发表于 2011-5-19 21:46:48

回复【3楼】hawkflyking
-----------------------------------------------------------------------

哦,慢慢看书吧,啃了不行再啃一遍...

cxlspp 发表于 2011-5-19 21:47:32

回复【3楼】hawkflyking
-----------------------------------------------------------------------

谢谢..
页: [1]
查看完整版本: 求思路,想不通...VHDL新手帖