FPGA实验报告 17文档格式.docx
《FPGA实验报告 17文档格式.docx》由会员分享,可在线阅读,更多相关《FPGA实验报告 17文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
//inputLCDPWMclk,
inputclk,
inputrstn,
//inputLCDDP1,
//inputLCDDP2,
//inputLCDDP3,
//inputLCDCol,
//input[7:
0]LCD1,
0]LCD2,
0]LCD3,
0]LCD4,
outputLCD_COM0_sig,
outputLCD_COM1_sig,
outputLCD_COM2_sig,
outputLCD_COM3_sig,
outputLCD_5_sig,
outputLCD_6_sig,
outputLCD_7_sig,
outputLCD_8_sig,
outputLCD_9_sig,
outputLCD_10_sig,
outputLCD_11_sig,
outputLCD_12_sig
);
wireLCDPWMclk;
wireLCDFrameclk;
wire[7:
0]seg_LCD1;
0]seg_LCD2;
0]seg_LCD3;
0]seg_LCD4;
seg4_7seg4_7_inst1(
.clk(clk),
.rst_n(rstn),
.data_in(LCD1),
.seg_out(seg_LCD1)
);
seg4_7seg4_7_inst2(
.data_in(LCD2),
.seg_out(seg_LCD2)
seg4_7seg4_7_inst3(
.data_in(LCD3),
.seg_out(seg_LCD3)
seg4_7seg4_7_inst4(
.data_in(LCD4),
.seg_out(seg_LCD4)
clk_genclk_gen_inst(
.clk_pwm(LCDPWMclk),
.clk_frame(LCDFrameclk)
LCD4DigitLCDDigit_inst(
.LCDFrameclk(LCDFrameclk),
.LCDPWMclk(LCDPWMclk),
.rstn(rstn),
.LCDDP1(1'
b0),
.LCDDP2(1'
.LCDDP3(1'
.LCDCol(1'
.LCD1(8'
b11000000),
.LCD2(8'
b10011001),
.LCD3(8'
b10100100),
.LCD4(8'
b11111001),
.LCD_COM0_sig(LCD_COM0_sig),
.LCD_COM1_sig(LCD_COM1_sig),
.LCD_COM2_sig(LCD_COM2_sig),
.LCD_COM3_sig(LCD_COM3_sig),
.LCD_5_sig(LCD_5_sig),
.LCD_6_sig(LCD_6_sig),
.LCD_7_sig(LCD_7_sig),
.LCD_8_sig(LCD_8_sig),
.LCD_9_sig(LCD_9_sig),
.LCD_10_sig(LCD_10_sig),
.LCD_11_sig(LCD_11_sig),
.LCD_12_sig(LCD_12_sig)
);
endmodule
4.管脚分配
Port
MachXo2pin
rst_n
N3
clk
A7
LCD_COM0
B14
LCD_COM1
C13
LCD_COM2
C14
LCD_COM3
D12
LCD_5
J12
LCD_6
J14
LCD_7
J13
LCD_8
K12
LCD_9
K13
LCD_10
K14
LCD_11
L14
LCD_12
M13
5.实验结果分析与总结
在本次试验中采用了一种新的包含有7段数码管芯片,因此本次试验和前几次的步骤略有不同,本次试验中首先需要调用几种外部文件,即clk_gen.v,seg4_7.v,LCD4digit.v,同时,设置输入来控制数码管及其右下方点,设置输出用来和芯片管脚链接,以使数码管显示相应字符。
在程序中,用clk来连接时钟信号端,用rstn来连接复位端,每按rstn时便可对数码管进行复位,LCD1,2,3,4则被用来和数码管相连,利用对LCD1,2,3,4进行赋值来控制数码管的显示字符,利用LCDDP1,2,3来控制右下方点,当值为1时,右下方点亮,当值为0时,右下方点灭,同时用LCDCol来控制数码管中间的两点。
对数码管显示的控制需要在LCD4Digit中进行设置,对其赋值时要注意赋值从高位到低位依次对应数码管最上端按顺时针赋值再到数码管中间位。
本次试验让我学会了如何利用一种新的芯片来显示字符,同时学会了数码管的赋值方式,以及数码管右下方点的控制方式,让我对于液晶显示器有了新的认识。
实验七设计简易电子时钟
要求设计一个简易电子时钟,实现分、秒计时功能,并且能够在控制实验板上实现液晶输出分、秒数值。
学会如何使用此种芯片来实现分秒的输出功能,首先在Lattice中新建工程和文件,并且选择对应的硬件,然后新建文件夹,将LCD_DISPLAY文件夹中的.v文件放入所新建的文件夹中,在TxetEditer中编写verilog模块代码调用seg4_7.v,clk_gen.v并保存,最后进行编译,管脚分配,调试,后几步和前面实验所需步骤一致。
本次试验中要对多种文件进行调用,因此在实验中要同时写好调用文件,clk_gen.v文件是用来产生时钟脉冲,seg4_7.v文件是用来表示4位二进制数如何被用来表示7段数码管及其右下方的点,lcd4digit.v被用来实现在LCD屏幕上显示特定字符,clock.v是用来和时钟脉冲连接,同时计算1s所需要的脉冲个数,在clock中进行设置,lcdshizhong.v是用来根据clock.v来调整数码管的显示字符,LCD.v则是用来在数码管中显示lcd4digit.v中设置的特定字符。
clock.v
moduleclock(
clkk,
rstn,
minute_h,
minute_l,
second_h,
second_l
inputclkk;
//inputclk;
inputrstn;
output[3:
0]minute_h;
//分钟的高位
0]minute_l;
//分钟的低位
0]second_h;
//秒钟的高位
0]second_l;
//秒钟的低位
reg[3:
regsecond_l_flag;
//秒钟低位的进位标志
regsecond_h_flag;
//秒钟高位的进位标志
regminute_l_flag;
//分钟低位的进位标志
//regminute_h_flag;
//分钟高位的进位标志
regclk1;
//regclkk;
reg[22:
0]count;
always@(posedgeclkk)
begin
if(count==23'
b10110111000110110000000)
begin
count<
=0;
clk1<
=~clk1;
end
else
count<
=count+1'
b1;
end
//end
/*//实验时选为2hz的时钟频率
always@(posedgeclkornegedgerstn)
begin
if(!
rstn)
=1'
b0;
else
end
*/
//秒钟的低位
always@(posedgeclk1ornegedgerstn)
if(!
second_l<
=4'
b0000;
second_l_flag<
if(second_l==4'
b1001)
begin
second_l<
//second_l+1'
second_l_flag<
end
else
//if(second_l