verilog 电路实现两个整数的最大公约数算法 下载本文

内容发布更新时间 : 2024/5/24 11:01:19星期一 下面是文章的全部内容请认真阅读。

姓名 学号 设计题目要求 设计工具及版本 两个任意正整数的最大公约数电路实现 Quartus II 13.1 ; ModelSim SE 6.2b 设计原理及结构方案 设计原理:求两个正整数A和B的最大公约数,其中一种算法为:A-B=C,C也为正整数,然后A和B的最大公约数等于B和C的最大公约数,再令B-C=D,则A,B的最大公约数等于C和D的最大公约数,直至两个数的差为0,那么A与B的最大公约数就等于此时的被减数。 因此,我们利用一个比较器,来判断每次输入的两个数的大小;因为在计算机中只有加法,所以要将较小的数转换为补码,利用补码相加来实现减法,因此需要一个源码转补码的模块;然后利用一个加法器,来实现减法运算;上述计算一次减法的时间为一个时钟周期,每个周期都计算一次减法,然后将结果反馈回去,作为下次减法的减数和被减数,直至最后差为0,得到最大公约数。 结构方案: 模块1模块2a4D触发器(32位 上升沿)D触发器(32位 下降沿)模块3c2a4resultaclk3模块432位比c2较器c3c1q332位加法器clk1bclk3b4D触发器(32位 上升沿)D触发器(32位 下降沿)q6loadclk32位源码转补码Sclk1 上述结构图中,除load和clk处的与门,或门外其余门都是32位的,即由32个与门构成的; 电路设计描述 (1)模块1保证第一个时钟周期输入的a,b值为初始的值,后续a,b的值都是经过比较和做差之后反馈回去的;每一个时钟周期计算一次; 模块2用四个32位的D触发器,左边两个为上升沿触发有效,右边两个为下降沿触发有效;将数据送人32位比较器后,若a>b,则c1=1,若a=b,则c2=1,若a