19543|15

51

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

verilog的always块里,既有电平又有边沿触发呢? [复制链接]

怎么在verilog的always块里,既有电平又有边沿触发呢?

比如always@(a or b or c)我让a为边沿触发怎么实现

此帖出自FPGA/CPLD论坛

最新回复

有这样描述电路的吗? 不符合标准的电路结构哦!  详情 回复 发表于 2011-10-22 22:25
点赞 关注
 

回复
举报

3138

帖子

0

TA的资源

裸片初长成(初级)

沙发
 
参照常用的带RESET和CLK输入的模块写就是了。
此帖出自FPGA/CPLD论坛
 
 

回复

6892

帖子

0

TA的资源

五彩晶圆(高级)

板凳
 

这个不是

always@(posedge a or bor c)!

此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 板凳 eeleader 的帖子

这样会报错!不对滴
此帖出自FPGA/CPLD论坛
 
 
 

回复

6892

帖子

0

TA的资源

五彩晶圆(高级)

5
 

你的意思就是既有电平触发也有边缘触发是吗?

 

如果这样,边缘触发频率高于电平变化频率,直接用边缘触发解决问题。

此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 5楼 eeleader 的帖子

我在写的程序分别用verilog和vhd写,
在vhd里,
begin
sel<=b&c;
process(a,b,c)
begin
if (sel="10") then
if a'event and a='1'  then
  cnt<=cnt+'1'
end if;
clk_out<=cnt[2];
end process;

在verilog里
always@(posedge a)
begin
sel<={b,c};
if(sel==2'b10) begin
   cnt<=cnt+1;
end
assign clk_out=cnt[2];
end

这两个程序最后采出的信号不一样。
事实上我做的是656视频信号采样,想采y分量,略掉cb和cr。vhd可以实现,但是verilog就不行。
对比下来,我觉得可能是触发信号的事.但又不敢确定,求指点
此帖出自FPGA/CPLD论坛
 
 
 

回复

732

帖子

0

TA的资源

纯净的硅(高级)

7
 
vhdl可以实现的 verilog一定可以

如果只采y分量的话  把时序设计好 就可以了啊 数据使能在采y的时候打开。
此帖出自FPGA/CPLD论坛
个人签名学习的乐趣在于分享。
 
 
 

回复

6892

帖子

0

TA的资源

五彩晶圆(高级)

8
 

在VHDL中这样写法,我认为有些不妥

begin
sel<=b&c;
process(a,b,c)
begin
if (sel="10") then
if a'event and a='1' then
cnt<=cnt+'1'
end if;
clk_out<=cnt[2];
end process;

主要是,if ----end if (sel="10")结构包括边缘触发(这个是实时钟信号)

常见写法1:

  if(变量=X) THEN

    -----

  ELSIF  clk'event and clk='1' then

----

end if;

这种写法更符合电路实际结构。

常见写法2:

if clk'event and clk='1' then

   if (sel="10") then

     ------

   end if;

 

end if;

 

目前从代码写法上看,VERILOG并没错误,

但我想是不是这个问题,A信号的边缘变化  慢于  B,C信号的变化,结果导致B,C信号采样丢失!

此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 
 

回复

16

帖子

0

TA的资源

一粒金砂(中级)

9
 
这哥哥,我来试图回答你:在你的VHDL程序里显然采信号的条件是a是上升沿时,同时b和c电平分别是1和0,对吧?这是你所希望的。而在你的verilog程序中,虽然由a的上升沿触发了always块,但在接下来sel<={b,c};这是非阻塞赋值,所以你所希望的sel==2'b10条件不会立即得到,那么就会出现明明条件到了,但是由于if(sel==2'b10)导致sel值判断不对(正确值要等该时刻结束才得到)建议你删掉sel<={b,c};,同时改写if(b==1b'0 && c==1b'0)
此帖出自FPGA/CPLD论坛
 
 
 

回复

732

帖子

0

TA的资源

纯净的硅(高级)

10
 
列个真值表  把输入输出的关系理清楚 这个问题迎刃而解。
此帖出自FPGA/CPLD论坛
个人签名学习的乐趣在于分享。
 
 
 

回复

6892

帖子

0

TA的资源

五彩晶圆(高级)

11
 

这个问题有这么复杂吗?还要真值表!

此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 
 

回复

6892

帖子

0

TA的资源

五彩晶圆(高级)

12
 
9楼得意见不敢苟同!感觉不是你说的问题。看VERILOG 与VHDL代码都是这样编写的, 问题不应该出现在你说的这个问题点上。
此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 
 

回复

732

帖子

0

TA的资源

纯净的硅(高级)

13
 
原帖由 eeleader 于 2011-9-22 21:27 发表 这个问题有这么复杂吗?还要真值表!


晕的 复杂的问题 写个真值表  会累死人的 只有简单的题 写写真值表 、

现在的这个问题 楼主是不清楚两种语言的差异  他认为应该实现同样的功能 但结果却不一致

所以我才建议 列个真值表 这样自己可以清楚的知道哪种写法OK 。
此帖出自FPGA/CPLD论坛
个人签名学习的乐趣在于分享。
 
 
 

回复

732

帖子

0

TA的资源

纯净的硅(高级)

14
 
VHDL:
sel<=b&c;
process(a,b,c)
begin
if (sel="10") then
if a'event and a='1' then
cnt<=cnt+'1'
end if;
clk_out<=cnt[2];
end process;
这个电路里sel的优先级高于a的优先级;

在verilog里
always@(posedge a)
begin
sel<={b,c};
if(sel==2'b10) begin
cnt<=cnt+1;
end
assign clk_out=cnt[2];
end
这个电路中,sel会在a的posedge处才会变化。

从代码分析,这是两种完全不一样的电路,所以结果不一样,也很正常!
[ 本帖最后由 tx_xy 于 2011-9-22 22:53 编辑 ]
此帖出自FPGA/CPLD论坛
个人签名学习的乐趣在于分享。
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(中级)

15
 

回复 14楼 tx_xy 的帖子

那怎么改一下才行呢。我也怀疑是这的问题
此帖出自FPGA/CPLD论坛
 
 
 

回复

6892

帖子

0

TA的资源

五彩晶圆(高级)

16
 

VHDL:
sel<=b&c;

process(a,b,c)

begin

if (sel="10") then

if a'event and a='1' then

cnt<=cnt+'1'

end if;

clk_out<=cnt[2];

end process;

这个电路里sel的优先级高于a的优先级;

有这样描述电路的吗?

不符合标准的电路结构哦!

此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表