陈晖洁的首席小迷弟 2022-10-16 22:18 采纳率: 36.4%
浏览 14
已结题

Verilog中遇到的一些问题

在Verilog中用always来编写程序

always @(posedge clk,negedge rst_n)begin
    if( rst_n==0 )
        begin
            state <= s01;
            led <= 1'b1;
        end
    else
        if (flag2 == 1'b1)
            begin
            state <= s00;
            led <= 1'b0;
            end
        else
            if (flag3 == 1'b1)
                begin
                state <= s01;
                led <= 1'b1;
                end
    //assign led = (flag3 == 1'b1)?1'b0:1'b1;
    //assign led = (flag2 == 1'b1)?1'b1:1'b0;    
    //assign led = (rst_n == 0)?1'b1:1'b0;
    end
endmodule

仿真如中输出的led为00和01,如果想要显示为0或者1,就要用assign来输出led,但是在这段里面assign无论如何都插入不进去,就是那三行注释部分,只是不知道放哪所以放在那,想问一下有没有办法把那三行放进去或者是说还有别的方法可以输出只显示0和1

  • 写回答

1条回答 默认 最新

  • 老皮芽子 2022-10-16 22:39
    关注
    1. always 中是不能插入 assign 语句
    2. led 在 always 中赋值后,就不能在其他的 always 或 assign中赋值
    3. 你可以定义一个中间值,再用 assign 赋值
    module mx(
        input a,clk,
        output led);
    reg led_r;
    always@(posedge clk)
    begin
    led_r <=a;
    end
    assign led=led_r;
    endmodule
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月25日
  • 已采纳回答 10月17日
  • 创建了问题 10月16日

悬赏问题

  • ¥20 Yolov5训练报错
  • ¥15 Unity发布gzip压缩的webgl之后让浏览器可以正常显示画面
  • ¥15 有没有人知道这种提示怎么关?现在不做ts项目了不知道咋关了,求解,现在我以前的js项目都是这种提示了
  • ¥15 为什么mysql做了碎片化处理data_free还是很高
  • ¥15 single positional indexer is out-of-bounds
  • ¥15 LSTM 模型数据量需要多少?
  • ¥15 mysql数据抓包开发报表
  • ¥15 linux系统下安装office打不开
  • ¥20 rsync脚本分发错误,文件不齐全
  • ¥15 labview顺序结构与时间延时