集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1882|回复: 5

verilog中的一个问题请指点,小弟新手

[复制链接]
qiyanan12 发表于 2011-10-30 21:52:54 | 显示全部楼层 |阅读模式
偶看到这样一个程序,对红色部分的a[14:13]不知道是怎么确定的,请指点,谢谢
module segmain(clk,reset_n,datain,seg_data,seg_com);        //模块显示
input clk;                                        //时钟信号
input reset_n;                                        //复位信号

input [15:0] datain;                                //数据输入引脚
output [7:0]seg_data;                                //定义数码管段输出引脚               
output [3:0]seg_com;                                //定义数码管位(选择)输出引脚

reg [3:0]seg_com;                                //定义数码管位输出寄存器
reg [7:0]seg_data;                                //定义数码管段输出寄存器
reg [3:0]bcd_led;                                //定义数码管选择寄存器                               
reg [36:0]count;                                //计数器寄存器

always @(posedge clk)
begin
        if(!reset_n)
                count<=0;
         else
            count=count+1;
end

always @(count[14:13] or datain)
begin
        case(count[14:13])                2'b00:
                    begin
                     bcd_led = datain[3:0];        //输出个位数值
                     seg_com  = 4'b1110;        //扫描个位
                    end
                2'b01:
                    begin
                     bcd_led=datain[7:4];        //输出十位数值
                     seg_com=4'b1101;                //扫描十位
                    end
                2'b10:
                    begin
                     bcd_led=datain[11:8];        //输出百位数值
                     seg_com=4'b1011;                //扫描百位
                    end
                2'b11:
                    begin
                     bcd_led=datain[15:12];        //输出千位数值
                     seg_com=4'b0111;                //扫描千位
                    end
        endcase

end

always @(seg_com or bcd_led)                //显示译码输出
begin
        case(bcd_led)
                4'h0:seg_data=8'hc0;// 显示0
                4'h1:seg_data=8'hf9;// 显示1
                4'h2:seg_data=8'ha4;// 显示2
                4'h3:seg_data=8'hb0;// 显示3
                4'h4:seg_data=8'h99;// 显示4
                4'h5:seg_data=8'h92;// 显示5
                4'h6:seg_data=8'h82;// 显示6
                4'h7:seg_data=8'hf8;// 显示7
                4'h8:seg_data=8'h80;// 显示8
                4'h9:seg_data=8'h90;// 显示9
                4'ha:seg_data=8'h88;// 显示A
                4'hb:seg_data=8'h83;// 显示b
                4'hc:seg_data=8'hc6;// 显示c
                4'hd:seg_data=8'ha1;// 显示D
                4'he:seg_data=8'h86;// 显示E
                4'hf:seg_data=8'h8e;// 显示F
         default:seg_data=8'hc0;    //显示0
  endcase
end

endmodule
jahero 发表于 2011-10-31 01:59:15 | 显示全部楼层
我觉得是2的13次方个时钟周期换一组数码管显示
jahero 发表于 2011-10-31 02:05:36 | 显示全部楼层
选择第几组数码管不是靠的是3 8译码器么?seg—com为什么是onehot码呢?
 楼主| qiyanan12 发表于 2011-10-31 09:22:49 | 显示全部楼层
one-hot编码能够减少毛刺产生的概率,我是这么认为的。还有一个问题想请教一下就是我的一个电子钟程序,下载仿真的时候出现了没点的数码管亮了,点的数码管亮度很小
zhouhuaguo 发表于 2011-11-4 16:24:57 | 显示全部楼层
就是count[14:13]只要数据有任何变化就是采样一次,一般不要这样写,最好一个系统用一个系统时钟采样操作,这样很容易造成系统稳定 。
风中的承诺 发表于 2011-11-4 17:02:28 | 显示全部楼层
回复 5# zhouhuaguo


    怎么样一个系统时钟啊 ,是不是就是整个大型设计,需要用到的频率 用一个分频模块,得到整个设计中的所有频率,在给各个模块?
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-24 18:22 , Processed in 0.094161 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表