OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4907|回复: 10

[ALTERA] 用了一个门级来描述二选一始终不能实现功能

[复制链接]

30

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2021-10-22
在线时间
33 小时
发表于 2022-6-9 17:12:37 | 显示全部楼层 |阅读模式
1金钱
请教大佬,
我的代码如下:
module my_mux1(A,B,sel,L);
        input A,B,sel;
        output L;

        //门级描述
        wire nsel, selA, selB;       
        not u1(nsel,se1);
        and u2(selA,A,nsel);
        and u3(selB,B,sel);
        or u4(L,selA,selB);


endmodule

按上述代码,只有sel=0时,L=A,当sel=1时,L!=B

改成如下代码,是没有问题的。
module my_mux2(A,B,sel,L);
        input A,B,sel;
        output L;

        assign L = (A&(~sel))+(B&sel);

endmodule


这2种实现方式虽不同,但逻辑是一样的啊。my_mux1为什么不对呢?

最佳答案

查看完整内容[请看2#楼]

u1第二个参数你检查一下是不是把1和l弄混了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8205
金钱
8205
注册时间
2020-5-11
在线时间
3700 小时
发表于 2022-6-9 17:12:38 | 显示全部楼层
luoengineer 发表于 2022-6-9 17:44
用3个拨码开关作为A 、B、sel ,led做 L,当sel=0,L= B; 当sel = 1,L 不等于A

u1第二个参数你检查一下是不是把1和l弄混了
专治疑难杂症
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8205
金钱
8205
注册时间
2020-5-11
在线时间
3700 小时
发表于 2022-6-9 17:42:12 | 显示全部楼层
不对是什么现象
专治疑难杂症
回复

使用道具 举报

30

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2021-10-22
在线时间
33 小时
 楼主| 发表于 2022-6-9 17:44:57 | 显示全部楼层
LcwSwust 发表于 2022-6-9 17:42
不对是什么现象

用3个拨码开关作为A 、B、sel ,led做 L,当sel=0,L= B; 当sel = 1,L 不等于A
回复

使用道具 举报

30

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2021-10-22
在线时间
33 小时
 楼主| 发表于 2022-6-10 09:38:59 | 显示全部楼层
LcwSwust 发表于 2022-6-9 17:58
u1第二个参数你检查一下是不是把1和l弄混了

是这个原因!
另外再请教一下:用timescale为什么产生不了输出波形?比如下面的代码:
`timescale 1us/1us

module trigger_generater(cout,clk);
input clk;
output cout;
reg cout;

always@(posedge clk)
begin
cout = #125 1;
cout = #5 0;
end

endmodule
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8205
金钱
8205
注册时间
2020-5-11
在线时间
3700 小时
发表于 2022-6-10 10:21:04 | 显示全部楼层
luoengineer 发表于 2022-6-10 09:38
是这个原因!
另外再请教一下:用timescale为什么产生不了输出波形?比如下面的代码:
`timescale 1us/ ...

这我就不了解了,我一般看一下生成的RTL图,然后直接用示波器测波形。
专治疑难杂症
回复

使用道具 举报

30

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2021-10-22
在线时间
33 小时
 楼主| 发表于 2022-6-10 10:27:55 | 显示全部楼层
LcwSwust 发表于 2022-6-10 10:21
这我就不了解了,我一般看一下生成的RTL图,然后直接用示波器测波形。

timescale可以这样用吧?还是说只能用在测试代码中?因为我有看到这样的描述:timescale说明仿真时间单位及精度
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8205
金钱
8205
注册时间
2020-5-11
在线时间
3700 小时
发表于 2022-6-10 10:42:08 | 显示全部楼层
luoengineer 发表于 2022-6-10 10:27
timescale可以这样用吧?还是说只能用在测试代码中?因为我有看到这样的描述:timescale说明仿真时间单位 ...

我是从来没用过仿真的,直接下载到FPGA运行。
专治疑难杂症
回复

使用道具 举报

3

主题

2013

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5618
金钱
5618
注册时间
2018-10-21
在线时间
1591 小时
发表于 2022-6-10 11:43:15 | 显示全部楼层
luoengineer 发表于 2022-6-10 09:38
是这个原因!
另外再请教一下:用timescale为什么产生不了输出波形?比如下面的代码:
`timescale 1us/ ...

是不是你运行的时间太短了
回复

使用道具 举报

30

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2021-10-22
在线时间
33 小时
 楼主| 发表于 2022-6-10 13:45:19 | 显示全部楼层
QinQZ 发表于 2022-6-10 11:43
是不是你运行的时间太短了

可我用的是always 啊,这样是无限循环的嘛?请问这样有问题?
回复

使用道具 举报

3

主题

2013

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5618
金钱
5618
注册时间
2018-10-21
在线时间
1591 小时
发表于 2022-6-10 16:24:11 | 显示全部楼层
luoengineer 发表于 2022-6-10 13:45
可我用的是always 啊,这样是无限循环的嘛?请问这样有问题?

是你仿真运行的时间,因为你定义的仿真单位是1us,如果运行1us肯定就看不到了,运行个几ms试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 12:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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