[Actel FPGA] fpga里面操作I/O口问题

[复制链接]
2227|4
 楼主| ljc01123 发表于 2009-7-29 09:00 | 显示全部楼层 |阅读模式
fpga里面操作I/O口时,需要对溢出位做判断,不知有没有CY这个位呢<br />for&nbsp;(i=0;&nbsp;i&lt8;&nbsp;i++)&nbsp;{&nbsp;ch=ch&lt&lt1;&nbsp;dacdata=CY;&nbsp;dacck();&nbsp;}<br />&nbsp;&nbsp;&nbsp;dacload=0;&nbsp;delay1(2);&nbsp;dacload=1;&nbsp;delay1(2);<br /><br />我要修改这个程序。<br />对里面的CY不是很理解,不知在fpga里如何操作
luoyuncong 发表于 2009-7-29 13:07 | 显示全部楼层

楼主是51学得太熟了吧,居然想到有CY位

  
 楼主| ljc01123 发表于 2009-7-29 16:11 | 显示全部楼层

到底有没有

可不可以这样操作呢,到底有没有这个寄存器呢
虚拟电路 发表于 2009-8-14 12:01 | 显示全部楼层
下面是基于4位并行BCD加法器算法的一种快速BCD的加法器VERILOG硬件描述语言程序及其仿真结果。

module bcd_check (data_i,data_o,cy_i,cy_o,en,z_i,z_o);

input data_i;

input cy_i;

input z_i;

input en; //insructure

output cy_o;

output data_o;

output z_o;

wire [3:0] data_i;

wire cy_i;

wire en;

reg z_o;

reg cy_o;

reg [3:0] data_o;


 


//}} End of automatically maintained section

reg [4:0] TEMP_RESULT;


 


always @(data_i or cy_i or en )

if(en == 0)

begin

cy_o=cy_i;

data_o=data_i;

z_o=z_i;

end

else

begin

if(data_i[3]&&data_i[1] ||(data_i[3]&&data_i[2]) || cy_i==1)

TEMP_RESULT = {1'b0,data_i } + {1'b0,4'b0110 } + cy_i;

else

begin

TEMP_RESULT[3:0]=data_i;

TEMP_RESULT[4]=cy_i;

end

data_o = TEMP_RESULT[3:0];

z_o = | TEMP_RESULT[3:0];

cy_o = TEMP_RESULT[4];

end

例如:两个十进制数2189+8075的正确结果应为11064,可是,相加运算后的结果为FEH,为此应进行BCD调整。将为经校验的相加结果0010,1001,1000,1001(十进制2989)+1000,0000,0111,0101(十进制8075)=1010,1001,1111,1110代人上述BCD校验模块,可得仿真结果如图四。
虚拟电路 发表于 2009-8-14 12:01 | 显示全部楼层
好好看看上面的一段程序,可能有你的答案。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

37

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部