verrilog 阶乘代码
luyued 发布于 2011-06-04 09:21 浏览 N 次原代码:
module jiecheng(
Reset,
Start,
Clk,
Data,
Done,
Result,
Exponent
);
input Reset,Start,Clk;
input[4:0] Data;
output Done;
reg Done;
output[7:0] Result,Exponent;
reg[7:0] Result,Exponent;
reg[4:0]InLatch;
always@(posedge Clk)
begin:BLOCK_A
integer NextResult,J;
if((Start&&Done)||Reset)
begin
Result<='b1;
Exponent<='b0;
InLatch<=Data;
Done<='b0;
end
else
begin
if((InLatch>1)&&(!Done))
begin
NextResult=Result*InLatch;
InLatch<=InLatch-1;
end
else
NextResult=Result;
if(InLatch<=1)
Done<='b1;
for(J=1;J<=5;J=J+1)
begin
if(NextResult>256)
begin
NextResult=NextResult>>1;
Exponent<=Exponent+1;
end
end
Result<=NextResult;
end
end
endmodule
改进后:
module jiecheng(
Reset,
Clk,
Data,
Done,
Result,
Exponent
);
input Reset,Clk;
input[4:0] Data;
output Done;
reg Done;
output[7:0] Result,Exponent;
reg[7:0] Result,Exponent;
reg unsigned [4:0]InLatch;
always@(posedge Clk)
begin:BLOCK_A
integer NextResult,J;
if(Reset)
begin
Result<='b1;
Exponent<='b0;
InLatch<=Data;
Done<='b0;
end
else
begin
if(InLatch>1)
InLatch<=InLatch-1;
if(InLatch==1)
Done<='b1;
NextResult=Result*InLatch; //此处综合为组合逻辑,在quartus 2c70芯片中被综合为一个硬件乘法器
for(J=1;J<=5;J=J+1) //此for循环被综合为组合逻辑,根据NextResult的值,在Exponent的基础之上
begin //一个数值,并且得到一个新的NextResult这个NextResult是乘法器输出
if(NextResult>256) //NextResult对256取模后的结果
begin
NextResult=NextResult>>1;//"="左边的NextResult和右边的NextResult已经是不同的信号线虽然名字相同
Exponent<=Exponent+1;
end
end
Result<=NextResult;
end
end
endmodule
MSN空间完美搬家到新浪博客!
- 07-01· 北凉国的那些事(组诗)
- 07-01· 《乱世佛音》 第七章 巨变
- 07-01· 南匈奴始末(3)
- 06-30· 流浪在波希米尼亚
- 06-30· 希尼亚从大洋西岸放飞新
- 06-28· 瑪利亞之城 - 家庭日 "光
- 06-28· 至青年营弟兄姐妹的一封
- 06-26· 《三国群英大富翁》追忆
- 06-24· 东莞血汗工厂实录(281:沙田
- 06-22· 第一次看戏
- 06-22· 经典复刻,独一无二:试
- 06-22· 蓝旗营教学中心9月份盛大
- 06-22· 品牌折扣女装嫣然品牌折
- 06-21· IQVopdnkvdz 1100
- 06-21· kriyoylto8fyds'p;tyijyfuifiogoi
- 06-21· 巴黎春天缤纷圣诞 喜迎新
- 06-21· 晒JS宝宝贝贝些 咯
- 06-21· 司马氏的谥法和葬仪
- 06-21· [转载]司马氏的谥法和葬仪
- 06-21· 闲来蓟县看秋山