西安电子科技大学
可编程逻辑器件原理、应用与实验课程实验报告实验名称实验一 ---- 实验五
电子工程学院学院 162班Array姓名陈圆圆学号1602121053
同作者
实验日期 2017 年 4 月8日
2、建立verilog源文件jishuqi。
3、综合,编译。
4、进行管脚分配,在此实验中,采用按键19开关为加、减法的选择,拨码开关55为是否有进位及借位,LED46为进位的显示,LED39、40、43、44分别为输出结果的显示。
5、程序的烧写。
四、在Diamond主界面中,进入Tools->Programmer,点击OK键,然后点击图标
,在State栏出现PASS,即说明烧写成功。
四、实验数据记录(或仿真及软件设计)
module jishuqi (cbin,sum,cout,sel); //cbin表示进位或借位,sel表示选择加减法
input cbin;//定义进位或借位
input sel;
output sum,cout;
reg [3:0] sum;//寄存器长度设置
reg cout;
parameter a = 4'b1010, b = 4'b0110;//计算参量的设置
always@(sel)
begin
if(sel) //sel为1进行加法运算,否则进行减法运算
{cout,sum}=a + b + cbin;
else
{cout,sum}=a - b - cbin;//减法器
end
endmodule
五、实验结果分析及回答问题(或测试环境及测试结果)
加、减法的验证:
当不按按键19时,二极管37、44亮,39、40、43灭,即显示数字为01110验证为加法运算,结果正确。
当按下按键19时,二极管37、39、43、44亮,40灭,
5.程序的烧写。
在Diamond主界面中,进入Tools->Programmer,点击OK键,然后点击图标,在State栏出现PASS,即说明烧写成功。
三、实验数据记录(或仿真及软件设计)
module seqdet(x,z,clk,rst);
input x,clk,rst;
output z;
wire z;
reg [2:0] state;
parameter IDLE=3'b000,
s0=3'b001,
s1=3'b010,
s2=3'b011,
s3=3'b100;
assign z=(state==s3&&x==1)?1:0;
always @(posedge clk)
begin
if(!rst)
state<=IDLE;
else
case(state)
IDLE: begin
if(x==0)
state<=IDLE;
else
state<=s0;
end
s0: begin
if(x==0)
界面Process框中,对Map Design,Place&Route Design,Export Files选中所有的选项,然后右键选中JEDEC File,单击其下拉菜单中的Rerun All;
管脚分配:clr:54 clk:53 input[1]:52 input[0]:50
output[3]:46 output[1]:45 output[1]:44 output[0]:43 6. 烧写程序
在Diamond主界面中,进入Tools->Programmer,点击OK键,然后点击图标,在State栏出现PASS,即说明烧写成功。
四、实验数据记录(或仿真及软件设计)
module shiyan5(clk,clr,s,cout);
input clk,clr;
input[1:0] s;
output[3:0] cout;
reg[3:0] cout;
always @(posedge clk)
begin
if(!clr) cout<=0;
else
case(s)
2'b00: if(cout>=4'b1000) cout<=0;
else cout<=cout+1;
2'b01: if(cout>=4'b1010) cout<=0;
else cout<=cout+1;
2'b10: if(cout>=4'b1100) cout<=0;
else cout<=cout+1;
2'b11: if(cout>=4'b1110) cout<=0;
else cout<=cout+1;
default: cout<=4'bxxxx;
endcase
end
endmodule
五、实验结果分析
同时按下52和50键,表示s=00,即进行模9运算,刚开始时,output[3]、output[2]、output[1]、output[0]为0000,按下、松开clk键多次,output[3]、output[2]output[1]output[0]0001,0010,0011,0100,0101,0110,0111,1000,000
clk:21 res:19 s_w:53
lucheng [0]:46 lucheng [1]:45 lucheng [2]:44 lucheng [3]:43
money [0]:40 money [1]:39 money [2]:38 money [3]:37
6. 烧写程序
在Diamond主界面中,进入Tools->Programmer,点击OK键,然后点击图标,在State栏出现PASS,即说明烧写成功。
四、数据记录
module chuzuche(clk,res,s_w,lucheng,money);
input clk,res,s_w; //s_w按下后才开始计费
output[3:0] lucheng; //
output[3:0] money;
reg[3:0] lucheng;
reg[3:0] money;
reg[28:0] count1;//计数器1
initial
begin
count1 = 0;
lucheng=4'b0000;
money=4'b0010;
end
always@(posedge clk)
begin
if(!s_w)//开关按下
begin
count1 = count1 + 1'b1;
if(count1 == 28'd5*******)//里程计数
begin
lucheng = lucheng +4'b0001;
if(lucheng > 4'b00011)//超出起步里数。