Ise考试问题
首先,FPGA本身不支持非2的指数乘除运算,所以算法中的乘除运算需要调用乘除核心,核心调用在这里无法表述。你需要在quaters或ISE上生成一个IP核,然后调用它。
其次,标准信号的周期是不确定的,因此无法确定结果何时超出范围;
不知道是哪个傻逼老师给你出的这道考题。只是挑战FPGA的极限,专门在FPGA不擅长的领域出题。
可以先用。如果你选择了最佳答案,你可以问我任何问题。我通常每隔一段时间就去看他一眼。
`时间刻度1纳秒/1纳秒
//////////////////////////////////////////////////////////////////////////////////
//公司:
//工程师:吓唬大米飞机
//
//创建日期:09:30:31 06/29/2010
//设计名称:
//模块名称:频率
//项目名称:
//目标设备:
//工具版本:
//描述:
//
//依赖关系:
//
//修订版:
//修订版0.01 -文件已创建
//附加注释:
//
//////////////////////////////////////////////////////////////////////////////////
模块频率(clk,En,zhamen,Input,LED4,LED1,LED2,LED3,LED5,低,高
);
输入clk//时钟输入,也就是所谓的标准信号。
输入En;
输入夔门;//栅极输入
输入输入;//测试数据输入
输出LED4//五个发光二极管作为输出。
输出led 1;
输出LED2
输出LED3
输出LED5
输出低电平;
输出高电平;
wire clk
wire En
铁丝扎门;
有线输入;
reg zhamen _ En//实际阈值使能
reg[10:0]Nx;//数据
reg[11:0]Ns;//标准计数
reg[7:0]led 1;
reg[7:0]led 2;
reg[7:0]led 3;
reg[7:0]led 4;
reg[7:0]led 5;
reg标志;
reg[10:0]结果;
reg低电平;//提示LED输出低于或高于测试范围。这里因为门限值设置多少和clk的频率有关,所以需要自己设置。
reg高;
始终@(posedge时钟)
开始
if(En==1)
开始
if(zhamen==1)
开始
if(输入==1)
Zha men _ En = 1;
结束
if(zhamen==0)
开始
if(输入==1)
开始
Zha men _ En = 0;
结束
结束
if(zhamen_En==1)
开始
Ns = Ns+1;
flag = 1;
结束
结束
其他
开始
led 5 = 0;
led 1 = 0;
led 2 = 0;
led 3 = 0;
led 4 = 0;
Zha men _ En = 0;
flag = 0;
结束
结束
始终@(posedge输入)
开始
if(zhamen_En==1)
Nx = Nx+1;
结束
始终@(posedge时钟)
开始
if(Zha men _ En = = 0 & amp;& ampflag==1)
开始
flag = 0;
结果=(Nx/Ns)*Fs//这只是一个例子。这里需要调用除法内核和乘法内核,调用后直接输入即可。
Case(result%10)//这里还调用了除法核心来生成余数和结果,下面同样如此。
4 ' b 0000:led 1 = 8 ' b 11111101;
4 ' b 0001:led 1 = 8 ' b 01100001;
4 ' b 0010:led 1 = 8 ' b 110110111;
4 ' b 0011:led 1 = 8 ' b 11110011;
4 ' b 0100:led 1 = 8 ' b 011001111;
4 ' b 0101:led 1 = 8 ' b 101101111;
4 ' b 0110:led 1 = 8 ' b 101111111;
4 ' b 0111:led 1 = 8 ' b 11100001;
4 ' b 1000:led 1 = 8 ' b 111111111;
4 ' b 1001:led 1 = 8 ' b 111111111;
默认:led 1 = 8 ' b 11111101;
结束案例
案例((结果-结果%10)%100)/10)
4 ' b 0000:led 2 = 8 ' b 11111100;
4 ' b 0001:led 2 = 8 ' b 01100000;
4 ' b 0010:led 2 = 8 ' b 11011010;
4 ' b 0011:led 2 = 8 ' b 11110010;
4 ' b 0100:led 2 = 8 ' b 01100110;
4 ' b 0101:led 2 = 8 ' b 101101110;
4 ' b 0110:led 2 = 8 ' b 101111110;
4 ' b 0111:led 2 = 8 ' b 11100000;
4 ' b 1000:led 2 = 8 ' b 111111110;
4 ' b 1001:led 2 = 8 ' b 111101110;
默认:led 2 = 8 ' b 11111100;
结束案例
案例((结果% 1000-结果% 100-结果%10)/100)
4 ' b 0000:led 3 = 8 ' b 11111100;
4 ' b 0001:led 3 = 8 ' b 01100000;
4 ' b 0010:led 3 = 8 ' b 11011010;
4 ' b 0011:led 3 = 8 ' b 11110010;
4 ' b 0100:led 3 = 8 ' b 01100110;
4 ' b 0101:led 3 = 8 ' b 101101110;
4 ' b 0110:led 3 = 8 ' b 101111110;
4 ' b 0111:led 3 = 8 ' b 11100000;
4 ' b 1000:led 3 = 8 ' b 111111110;
4 ' b 1001:led 3 = 8 ' b 111101110;
默认:led 3 = 8 ' b 111111100;
结束案例
案例((结果% 10000-结果% 1000-结果% 100-结果%10)/1000)
4 ' b 0000:led 4 = 8 ' b 11111100;
4 ' b 0001:led 4 = 8 ' b 01100000;
4 ' b 0010:led 4 = 8 ' b 11011010;
4 ' b 0011:led 4 = 8 ' b 11110010;
4 ' b 0100:led 4 = 8 ' b 01100110;
4 ' b 0101:led 4 = 8 ' b 101101110;
4 ' b 0110:led 4 = 8 ' b 101111110;
4 ' b 0111:led 4 = 8 ' b 11100000;
4 ' b 1000:led 4 = 8 ' b 111111110;
4 ' b 1001:led 4 = 8 ' b 111101110;
默认:led 4 = 8 ' b 11111100;
结束案例
案例((结果-结果% 10000-结果% 1000-结果% 100-结果%10)/10000)
4 ' b 0000:led 5 = 8 ' b 11111100;
4 ' b 0001:led 5 = 8 ' b 01100000;
4 ' b 0010:led 5 = 8 ' b 11011010;
4 ' b 0011:led 5 = 8 ' b 11110010;
4 ' b 0100:led 5 = 8 ' b 01100110;
4 ' b 0101:led 5 = 8 ' b 101101110;
4 ' b 0110:led 5 = 8 ' b 101111110;
4 ' b 0111:led 5 = 8 ' b 11100000;
4 ' b 1000:led 5 = 8 ' b 111111110;
4 ' b 1001:led 5 = 8 ' b 111101110;
默认:le D5 = 8 ' b 11111100;
结束案例
结束
结束
末端模块