怎么用Verilog实现扫描4*4矩阵键盘?

怎么用Verilog实现扫描4*4矩阵键盘?,第1张

从程控放大电路的实际应用来讲,楼主所作的方案没有什么必要。当然,就题目来讲,一个经典的4*4矩阵键盘可以一键输入0~F的信息,还是很有价值的。原来也没有作过这方面的东西,尝试着在网络上找了别人的文档,感觉如下链接交待的最好,它不仅有4*4矩阵键盘外围电路的示意图,也有关于代码的流程图说明(当然对于verilog设计--即作为硬件来讲,把它表述成为状态图会更好),还有对于所设计模块接口信号的简单说明。可以一起学习一下。

1把两个矩阵存进存储单元(寄存器),是怎样的时钟去写入数据的

如果A B是变量,数据就需要写入存储器而不是初始化进去,写入遵循存储器写入时序。

2 如何取出数据进行乘法运算并累加,看到常用的是脉动阵列,但是我不是很懂

提供矩阵元素的地址,从存储器中读出,脉动阵列就是流水线结构。

3.在软件编程中利用的是for循环,在用verilog实现时,是设置一个标志位来决定运算什么时候结束吗?

硬件设计的思维方式和软件设计的不同,软件中的for是循环利用循环体内的代码执行,硬件中的for要实实在在的硬件电路来实现的。

我的思维比较混乱,求大家给我指点指点~

思维的确混乱,概念不清楚,还是打好基础的好:)

input[63:0] A0, //A0表示A矩阵的第一行 其中A0[63:48] A0 [47:32] A0[31:16] A0 [15:0]分别表示第一行中的四个元素(每个元素16位表示),下同

input[63:0] A1,

input[63:0] A2,

input[63:0] A3,

input[63:0] B0,

input[63:0] B1,

input[63:0] B2,

input[63:0] B3,

output[63:0] C0,

output[63:0] C1,

output[63:0] C2,

output[63:0] C3,

//假设要求C = AB

C0[63:48] = A0[63:48]*B0[63:48] + A0 [47:32]*B1[63:48] + A0[31:16]*B2[63:48] + A0 [15:0]*B3[63:48]//根据公式相应的求出 C0[47:32] C0[31:16] C0[15:0].........

//同理求 C1 C2 C3

//这个只是个人理解,仅供参考,有更好的方法我们共同交流学习。

如果要求矩阵的逆,首先你要判断该矩阵是否为退化矩阵

一般用伴随矩阵法和初等变换法

个人认为FPGA更适合用初等变换法求逆矩阵。

但是求逆矩阵会涉及到除法,FPGA定点运算,做除法会有精度丢失。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12061461.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存