完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
请帮忙解决这个问题。
我有一个来自DIGILENT的59美元斯巴达BASYS板。 Q1。 它表示振荡器在时钟选择跳线JP4上产生25MHZ,50MHZ或100MHZ。 产品出厂时设置的默认频率是多少? 我将如何更改频率? 我没有看到任何转换。 Q2。 我正在尝试使用下面的程序在7段显示器上显示0到E,正好是一秒。 显示屏始终显示为零。 为什么? 如果Ichange:计数器#C U(CLK1,(arst || one_second_clock),1'b1,时钟); to:counter #C U(CLK1,(arst),1'b1,clock); 它显示从0到A.否则显示始终为0.为什么? 我很困惑。 有人可以解释一下。 模块hex2_7seg(in,out);输入[3:0] in; / * 3210 * /输出[6:0]输出; / * abcdefg * / reg [6:0] out;总是@(*)begincase(in) / * 3210 * / / * abcdefg * / 0:out = 7'b0000001; 1:out = 7'b1001111; 2:out = 7'b0010010; 3:out = 7'b0000110; 4:out = 7'b1001100; 5:out = 7'b0100100; 6:out = 7'b0100000; 7:out = 7'b0001111; 8:out = 7'b0000000; 9:out = 7'b0000100; 10:out = 7'b0001000; 11:out = 7'b1100000; 12:out = 7'b0110001; 13:out = 7'b1000010; 14:out = 7'b0110000; 15:out = 7'b0111000; default:out = 7'bx; endcaseendendmodule 模块计数器(clk,arst,en,q);参数N = 7;输入clk,arst,en;输出[N-1:0] q; reg [N-1:0] q; 总是@(posedge clk或posedge arst)if(arst)q else if(en)q endmodule 模块s3_onesec(CLK1,arst,seg,an);参数C = 30;参数N = 7;参数W = 4;参数CRYSTAL = 50; // 50 MHZ参数DVSR = CRYSTAL * 1000000; 输入CLK1,arst;输出[0:N-1] seg;输出[3:0] an;导线[C-1:0]时钟;导线[W-1:0] zero_to_f_counter;导线one_second_clock; 分配= 4'b0010; / * ON ON OFF ON * / assign one_second_clock =(clock == DVSR)? 1:0; 计数器#C U(CLK1,(arst || one_second_clock),1'b1,时钟);计数器#W S(CLK1,arst,one_second_clock,zero_to_f_counter); hex2_7seg D(zero_to_f_counter,seg); endmodule ------------------ UCF文件----------------------------- ----- #7段的引脚分配displayNET“seg”LOC =“p25”; #Bank = 3,信号名称= CANET“seg”LOC =“p16”; #Bank = 3,信号名称= CBNET“seg”LOC =“p23”; #Bank = 3,信号名称= CCNET“seg”LOC =“p21”; #Bank = 3,信号名称= CDNET“seg”LOC =“p20”; #Bank = 3,信号名称= CENET“seg”LOC =“p17”; #Bank = 3,信号名称= CFNET“seg”LOC =“p83”; #Bank = 1,信号名称= CG NET“an”LOC =“p26”; #Bank = 3,信号名称= AN3NET“an”LOC =“p32”; #Bank = 3,信号名称= AN2NET“an”LOC =“p33”; #Bank = 3,信号名称= AN1NET“an”LOC =“p34”; #Bank = 3,信号名称= AN0 #clockNET的引脚分配“CLK1”LOC =“p54”; #Bank = 2,信号名称= CLK1 #BTNsNET的引脚分配“arst”LOC =“p41”; #Bank = 2,信号名称= BTN3 |
|
相关推荐
1个回答
|
|
|
sant98写道:请帮助解决这个问题。
我有一个来自DIGILENT的59美元斯巴达BASYS板。 Q1。 它表示振荡器在时钟选择跳线JP4上产生25MHZ,50MHZ或100MHZ。 产品出厂时设置的默认频率是多少? 我将如何更改频率? 我没有看到任何转换。 时钟频率取决于JP4上跳线分流器的位置。 IIRC当顶部和中间引脚连接时,时钟频率为100 MHz。 没有连接,它是50 MHz。 连接midle和bottom引脚时,频率为25 MHz。 (我可能会向后调整100 MHz和25 MHz配置,但电路板上的标记会提醒您这一点。 Bigilent网站上的用户指南中应包含以下类型的问题:http://www.digilentinc.com/Data/Products/BASYS/BASYS_E_RM.pdf 还有一个警告:用一些BASYS板卡住的快速参考卡有一些与7段显示器相关的不正确的引脚号。 (IIRC交换了两个annode引脚号码)。 如有疑问,请使用上面链接的手册。 sant98写道: Q2。 我正在尝试使用下面的程序在7段显示器上显示0到E,正好是一秒。 显示屏始终显示为零。 为什么? 如果Ichange:计数器#C U(CLK1,(arst || one_second_clock),1'b1,时钟); to:counter #C U(CLK1,(arst),1'b1,clock); 它显示从0到A.否则显示始终为0.为什么? 我很困惑。 有人可以解释一下。 这里的问题是,在第一个版本中,当one_second_clock变为高电平时,将在arst上产生一个posedge,然后将其输出重置为零。 现在输出与一秒值不匹配,因此one_second_clock返回低位。 这一切都发生在CLK1的置位之间的非常短的时间段内,因此第二个计数器永远不会在CLK1的边缘处看到one_second_clock为高,因此它永远不会递增。 最简单的解决方案是使用同步复位,通过从计数器模块中省略“或posedge arst”。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
3118 浏览 7 评论
3407 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2874 浏览 9 评论
3966 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
3057 浏览 15 评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
1325浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
1167浏览 1评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 07:55 , Processed in 0.632992 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1836
