赛灵思
直播中

刘嵘

8年用户 216经验值
私信 关注
[问答]

请问Digilent环境光传感器不工作该怎么办?

tify;text-indent: 40px;">你好
我在Digilent公司使用BASYS2
和研究环境光传感器Pmod。
我想下面的代码信息
clk:50Mhz
sclk:1Mhz
cs:sclk x 16计数
数据8bit(dout是1位数据)
LED:通过环境光传感器输出和检查信息
我的源代码如下。
但它不适用于BASYS2板。
我不知道什么是错误。
所以请一些信息或建议
LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; USE IEEE.std_logic_unsigned.ALL;
ENTITY SPI3 ISPORT(clk:IN std_logic; clr:IN std_logic; dout:IN std_logic; led:OUT std_logic_vector(7 DOWNTO 0); sclk:OUT std_logic; cs:OUT std_logic); END SPI3;
SPI3的架构SPI3_be
TYPE state_type IS(idle,adc_r,adc_w); SIGNAL状态:state_type:= idle;
SIGNAL cnt_sclk:INTEGER RANGE 0到49; SIGNAL newsclk:std_logic:='0'; SIGNAL cnt_cs:INTEGER RANGE 0到1599; SIGNAL newcs:std_logic:='1'; SIGNAL数据:std_logic_vector(7 DOWNTO 0); SIGNAL cnt_data
:INTEGER范围1到16; BEGINsclk csIF newcs ='1'THENstate ELSIF newcs ='0'THENstate END IF; WHEN adc_r => IF cnt_data> 0 AND cnt_data cnt_data state ELSIF cnt_data> 3 AND cnt_data cnt_data data(11  -  cnt_data)

state ELSIF cnt_data> 11 AND cnt_data cnt_data state ELSIF cnt_data = 16 THENstate END IF; WHEN adc_w => led cnt_data state 以下为原文

Hello
I'm using BASYS2 at Digilent Co.
and Studying Ambient Light Sensor Pmod.
I think below information of code

clk : 50Mhz
sclk : 1Mhz
cs : sclk x 16 count
data 8bit ( dout is 1bit data)
LED : output and check of information by  Ambient Light Sensor

My source code is below.
but it's not working on BASYS2 board.
I don't know what is error . So Please some imformation or advice


LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_unsigned.ALL;

ENTITY SPI3 IS
PORT(
  clk  : IN std_logic;
  clr  : IN std_logic;
  dout  : IN std_logic;
  led  : OUT std_logic_vector( 7 DOWNTO 0 );
  sclk  : OUT std_logic;
  cs   : OUT std_logic
  );
END SPI3;

ARCHITECTURE SPI3_be OF SPI3 IS
TYPE state_type IS( idle, adc_r, adc_w );
SIGNAL state : state_type := idle;
SIGNAL cnt_sclk  : INTEGER RANGE 0 TO 49;
SIGNAL newsclk   : std_logic := '0';
SIGNAL cnt_cs   : INTEGER RANGE 0 TO 1599;
SIGNAL newcs   : std_logic := '1';
SIGNAL data    : std_logic_vector( 7 DOWNTO 0 );
SIGNAL cnt_data  : INTEGER RANGE 1 TO 16;

BEGIN
  sclk <= newsclk;
  cs <= newcs;
  clkdiv : PROCESS( clr, clk )
  BEGIN
   IF clr = '0' THEN
    cnt_sclk <= 0;
    cnt_cs <= 0;
    newsclk <= '0';
    newcs <= '1';
   ELSIF clk'EVENT AND clk = '1' THEN
    IF cnt_sclk = 49 THEN
     newsclk <= NOT newsclk;
     cnt_sclk <= 0;
    ELSE
     cnt_sclk <= cnt_sclk + 1;
    END IF;
   
    IF cnt_cs = 1599 THEN
     newcs <= NOT newcs;
     cnt_cs <= 0;
    ELSE
     cnt_cs <= cnt_cs + 1;
    END IF;
   END IF;
  END PROCESS clkdiv;

  FSM : PROCESS( clk, clr, state )
  BEGIN
   IF clr ='0' THEN
    cnt_data <= 1;
    data <= "11111111";
   ELSIF clk'EVENT AND clk = '1' THEN
    CASE state IS
     WHEN idle =>
      IF newcs = '1' THEN
       state <= idle;
      ELSIF newcs ='0' THEN
       state <= adc_r;
      END IF;
     
     WHEN adc_r =>
      IF cnt_data >0 AND cnt_data <4 THEN
       cnt_data <= cnt_data + 1;
       state <= adc_r;
      ELSIF cnt_data > 3 AND cnt_data <12 THEN
       cnt_data <= cnt_data + 1;
       data( 11 - cnt_data ) <= dout;
       state <= adc_r;
      ELSIF cnt_data > 11 AND cnt_data <16 THEN
       cnt_data <= cnt_data + 1;
       state <= adc_r;      
      ELSIF cnt_data = 16 THEN
       state <= adc_w;
      END IF;
     
     WHEN adc_w =>
       led <= data;
       cnt_data <= 1;
       state <= idle;
     END CASE;
   END IF;
  END PROCESS FSM;
END SPI3_BE;
     

回帖(4)

潘晶燕

2019-7-30 10:45:12
男,
为您的代码创建一个测试平台。
模拟它。
观察模拟。
修复任何错误。
重复,直到你有你想要的。
Austin Lesea主要工程师Xilinx San Jose

以上来自于谷歌翻译


以下为原文

m,
 
Create a test bench for your code.
 
Simulate it.

Observe the simulation.
 
Fix any bugs.
 
Repeat until you have what you want.
 
 
Austin Lesea
Principal Engineer
Xilinx San Jose
举报

田野

2019-7-30 10:57:11
谢谢你的回复
我还创建并测试了测试台代码。
并且它收集到在模拟器中操作clk,clr,sclk,cs。
'dout'类型是输入std-logic,我也输入脉冲信号std-logic类型。
输入数据(7:0)中的1位信号和输出LED(7:0)信号。
但它没有在TT上工作

以上来自于谷歌翻译


以下为原文

Thank you for replying it
 
I also created and did test bench code.
and it's collect to operate clk, clr, sclk, cs in simulator.
 
'dout' type is input std-logic and i also input pulse signal std-logic type.
Input 1 bit signal in data(7:0) and output LED(7:0) signal .
 
But it;s not working on board TT
 
 
举报

张颖

2019-7-30 11:11:50
- 但它没有在TT上工作 
您使用的链接是否在以下链接http://www.xilinx.com/products/boards-and-kits/1-27b7gd.html中指定?
在这种情况下,以下手册https://www.digilentinc.com/Data/Products/BASYS2/Basys2_rm.pdf是有用的参考。
_______________________________________________如果有助于解决您的查询,请将此帖子标记为“接受为解决方案”。
因此,它将有助于其他论坛用户直接参考答案。如果您认为该信息有用且面向答复,请给予此帖子称赞。

以上来自于谷歌翻译


以下为原文

--But it;s not working on board TT

Are you using same board specified in the following link http://www.xilinx.com/products/boards-and-kits/1-27b7gd.html?
 
In that case the following  manual https://www.digilentinc.com/Data/Products/BASYS2/Basys2_rm.pdf is useful reference.
________________________________________________

Please mark this post as an "Accept as solution" in case if it helped to resolve your query. So that it will help to other forum users to directly refer to the answer.

Give kudos to this post in case if you think the information is useful and reply oriented.
举报

黄淳

2019-7-30 11:23:52
magictaro写道:
谢谢你的回复
我还创建并测试了测试台代码。
如果测试台没有传感器型号,那么它不是测试台。
----------------------------是的,我这样做是为了谋生。

以上来自于谷歌翻译


以下为原文

magictaro wrote:
Thank you for replying it
 
I also created and did test bench code.
 
If the test bench does not have a model of the sensor, then it's not a test bench.
----------------------------Yes, I do this for a living.
举报

更多回帖

×
20
完善资料,
赚取积分