qiyanan12 发表于 2011-10-30 21:52:54

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

偶看到这样一个程序,对红色部分的a不知道是怎么确定的,请指点,谢谢
module segmain(clk,reset_n,datain,seg_data,seg_com);        //模块显示
input clk;                                        //时钟信号
input reset_n;                                        //复位信号

input datain;                                //数据输入引脚
output seg_data;                                //定义数码管段输出引脚               
output seg_com;                                //定义数码管位(选择)输出引脚

reg seg_com;                                //定义数码管位输出寄存器
reg seg_data;                                //定义数码管段输出寄存器
reg bcd_led;                                //定义数码管选择寄存器                               
reg count;                                //计数器寄存器

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

always @(count or datain)
begin
        case(count)                2'b00:
                  begin
                     bcd_led = datain;        //输出个位数值
                     seg_com= 4'b1110;        //扫描个位
                  end
                2'b01:
                  begin
                     bcd_led=datain;        //输出十位数值
                     seg_com=4'b1101;                //扫描十位
                  end
                2'b10:
                  begin
                     bcd_led=datain;        //输出百位数值
                     seg_com=4'b1011;                //扫描百位
                  end
                2'b11:
                  begin
                     bcd_led=datain;        //输出千位数值
                     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只要数据有任何变化就是采样一次,一般不要这样写,最好一个系统用一个系统时钟采样操作,这样很容易造成系统稳定 。

风中的承诺 发表于 2011-11-4 17:02:28

回复 5# zhouhuaguo


    怎么样一个系统时钟啊 ,是不是就是整个大型设计,需要用到的频率 用一个分频模块,得到整个设计中的所有频率,在给各个模块?
页: [1]
查看完整版本: verilog中的一个问题请指点,小弟新手